DONE DOING Moo(se) support Always better subroutine/method return types; GRAMMAR new() accept properties init values; GRAMMAR subroutine arguments received via 'shift' instead of @ARG only; GRAMMAR package 'integer' exports sub 'integer()' to check type, and friends accessors & mutators available (only?) w/out using 'get_' & 'set_' prefixes; Class.pm PERLOPS_PERLTYPES, Properties.pm? CPPOPS_CPPTYPES When Moo(se) is enabled 'use parent' should not exist, replaced by 'extends'; GRAMMAR $properties should not exist, replaced by 'has'; GRAMMAR new() from Moo(se) instead of RPerl RPerl::Exporter re-enable t/10 & t/11 <<< ==== DO THIS FIRST!!! === >>> Class/Generator.pm, error if class name from 'use parent Foo' does not match class name from following 'use Foo' or '{ Foo->import(); }' Class/Generator.pm & Package.pm & Include.pm: CPPOPS_CPPTYPES fix & test *_CHECK*() exporting in rperlgmp.pm & rperlsse.pm, as hard-coded in rperlgsl.pm enable qw(:all) Learning RPerl new subroutine headers Learning RPerl PhysicsPerl MathPerl Quick-Start Guide finish GSL support add 'apt-get install libgsl-dev' (or libgsl0-dev) & 'cpanm Math::GSL::Matrix' in RPerl & LAMP Installers, document in INSTALL? gsl_matrix_CHECK*() CPPOPS_CPPTYPES tests for all EMAV00 - EMAV09 enable gsl_linalg.h & other gsl friends Alien::PCRE2 ensure tests pass on both share & system installs replace mirrored DEV version (Windows bug fix) w/ new official version when released extend XS test CPAN testers failures Alien::JPCRE2 update tests to Test::Alien fix AppVeyor Windows failures add XS test CPAN testers failures regex support substitution LHS must be variable non-destructive regex /r !~ logic allow non-standard shebangs Learning RPerl exercises, check on CloudForFree.org RPerl-calling-Perl support database support MongoDB PostgreSQL MySQL KICKSTARTER: DONE??? Monolithic Modules, Fix Deps Warning & Create Tests DONE! Parse::Eyapp regex fix & CPAN upload DONE??? implement 10 ops in CPPOPS_CPPTYPES CODE GENERATION, CPPOPS_CPPTYPES MODE ForEach.pm finish .pl body generation subroutines, final operation must be return operator WHAT ELSE?!? Alien::GSL Alien::Pluto Alien::astyle upgrade to EU::MM Alien::GMP Alien::??? what else? Inline::RPerl update tests to emit more useful failure info, for CPAN testers debugging update CPPOPS_DUALTYPES reference files remove explicit properties inheritance, Generator.pm & Grammar.eyp OO class properties, detect user-defined init() subroutine & call from C++ constructor do not rearrange subs & methods in CPPOPS_CPPTYPES output code, as occurs w/ Bubble.pm, or is rearranging necessary due to division of subs & methods in Bubble.h output file? replace @_ with @ARG in system code 'cannot' -> 'can not' in all docs & source files uncompile w/ corrupted or missing PMC, CPP, H files uncompile delete EXE files disable variable declaration w/out initial value, grammar & tests & docs Learning RPerl upgrade install instructions add chapter 1 bonus exercise, create stand-alone executable for Hello World add missing operator tables as with 2.4.13 chop & chomp, etc add bitstrings to 2.1.15, mentioned in LP189 EAR17 & Exxx & any other new errors update appendix with grammar changes: bitwise_negation_lparen, additional operators? abs & mako's other new ops are no longer "Coming Soon" print dot-to-comma in lib/RPerl/Test/* templateperl mv sort to standardperl all servers online rperl shiny sites enable loop parallelization handle gauss_seidel.openmp.cpp.pluto.cloog files enable num_cores fix print fix loop labels fix min/max enable shorthand classes add copyright notices to all files pass tests on appveyor strawberry ExtUtils::CppGuess bug fix w/ davido update requirement for EU::MM to v7.14? https://github.com/ingydotnet/inline-c-pm/issues/51 ... explain difference between .a, .o, and .so .o can be combined into .so or .exe? .a is "just a tarball of .o files"? .so must always be stand-alone, like a .exe w/out a main()? append 'L' to all numeric literals to force long int? create macro to replace all conditional truth value checks with extra logic to include RPerl false values of '0', q{0}, and q{}, in both character and string type INSTALL notes, update step 3 examples travis enable dev Perl fix dev Perl via P5P chmod a-x *.so output if not on HP-UX print comma-vs-dot to correct output cpp output file post-processing for source code text alignment split author tests (checking Changes file, etc) into xt/ directory, split deps in Makefile.PL, possibly utilize AUTHOR_TESTING in travis-perl/helpers INSTALLERS Linux DEB (Debian, Ubuntu, Xubuntu, etc) Linux RPM (RedHat, CentOS, etc) Linux Portage Android iOS Mac Windows ActiveRPerl Windows Strawberry RPerl Tarball CPAN GitHub OPERATORS, CPPOPS_CPPTYPES MODE NAMED: croak chomp join keys pop push reverse sort split values wait NAMED_UNARY: chdir cos defined exists -e -r -f -T length rand scalar sin sqrt (need create) Perl "features" http://perldoc.perl.org/feature.html NOT YET SUPPORTED, requires at least Perl v5.16: fc POSIX ceil, floor, modf NOT YET SUPPORTED, C99 functions require at least Perl v5.22: trunc, cbrt, fmax, round, lround, etc. Math::Trig & Math::Complex new, make, emake, cplx, cplxe cbrt, root tan; csc, cosec, sec, sec, cot, cotan; asin, acos, atan; acsc, acosec, asec, acot, acotan; sinh, cosh, tanh; csch, cosech, sech, coth, cotanh; asinh, acosh, atanh; acsch, acosech, asech, acoth, acotanh; pi, pi2, pi4, pip2, pip4 overloaded complex arithmetic +, -, *, /, ** ~ abs, sqrt, exp, log LEARNING RPERL new subroutine headers!!! tables on metacpan, fix headers and borders CSS fix on metacpan, elsewhere check X everywhere other than pod2rperlhtml use unsigned_integer instead of integer in ex2.6 & 2.7, check all other exercises as well, change error checking accordingly croak or die in exercise solutions? L<> hyperlinks broken or missing in some outputs? metacpan list newline fix, section 1.1 BEGIN INLINE CSS DIV comment should not appear in any output docbook2html & sgmltools & sgml2html: Section 2.3 "Perl's Built-In Warnings" single-quote vs apostrophe docbook2pdf segfault sgml table cell padding foreword chapters 5 - 17 illustrations: images & ASCII art covers publish video series CLOUDATCOST.COM new 8-core machine web server cluster compute nodes BOOK OF RPERL chapter 5 MISC DOCUMENTATION update https://en.wikipedia.org/wiki/List_of_compilers#Perl_Compilers RPERL.ORG Book of RPerl tome graphic Roadie Roadrunner, add eye circle to website shiny RPERL COMMAND-LINE FRONT-END --noWarnings option does not suppress WEXRP00, `export RPERL_WARNINGS=0` does UNSIGNED INTEGER FIX full boolean support via Boolean.cpp/h, rperltypes.pm, SvBOKp(), etc. char type-testing subroutines in Character.pm full character support via Character.cpp/h, rperltypes.pm, SvCOKp(), etc. full unsigned_integer support via UnsignedInteger.cpp/h, rperltypes.pm, SvUIOKp(), etc. CPPOPS_CPPTYPES conversion routines TESTS create EXECUTE_WARNING & PARSE_WARNING & GENERATE_WARNING for t/*, begin by testing for WCOPR00 & WCOPR01 in RPerl/Test/SubroutineArguments/*_10_* split author (developer) tests from normal user tests TypeConversion, all 42 normal conversions plus to_string() add EXECUTE_SUCCESS to *good*.pl uncompile w/ corrupted or missing PMC, CPP, H files RPerl::EPSILON() array size declaration compensation package/subroutine/method names starting w/ underscore variable redeclaration (masking) properties & hash type-inner type-vs-key name mismatch (ECOGEASRP21: PERLOPS Class.pm properties accessors/mutators; CPPOPS entry & entrytyped) accessors/mutators including get_*_element() & get_*_value() subclasses Foo_raw type $properties & VariableDeclaration array size on non-arrayref type $properties array size PERLOPS_PERLTYPES generation variable & retrieval type mismatches, etc (including ECOGEASCP30?) get_raw() & set_raw() t/13_compile_execute.t (?) for proper functionality *_arrayref_arrayref_arrayref while (my FOO) <$FILEHANDLE> @ARGV %ENV ERROR ECOGEASRP16... named operator [SOMEOP] requires exactly one argument, dying ERROR ECOGEASRP17... named operator [SOMEOP] requires one or more arguments, dying all currently-implemented named ops all currently-implemented named_unary ops invalid hash key starting with non-lowercase-letter ECOGEASRP23 invalid OO property name (hash key) starting with non-lowercase-letter ECOGEASRP24 invalid type inner redundant name starting with non-lowercase-letter ECOGEASRP25 CONSTANT_CALL_SCOPED *_to_*() data type conversion functions text literals, backslash vs double-backslash string_to_NUMERIC*() (AKA all string conversion subroutines), test that underscores are accepted in numbers & non-numerics are rejected, in the following files: String.pm, String.cpp, GMPInteger.pm, GMPInteger.cpp fix RPerl/Test/ScopeTypeNameValue/program_5*_good.pl.DISABLED_PERL_V5_22 fix RPerl/Test/Expression/program_*_good.pl.DISABLED_NEED_FIX fix lib/RPerl/Test/OperatorVoid01NamedVoidReturn/*.DISABLED_NEED_FIX https://github.com/wbraswell/rperl/issues/25 KICKSTARTER determine remaining items 10 builtins? 1 New Benchmark Application? Finish All CPPOPS_CPPTYPES Code Generation? PARALLEL manual loop test automate QUALITY ASSURANCE Fix CPAN Testers Bugs cpants kwalitee Devel::Cover Devel::Cover::Report::Coveralls coveralls.io MEDIUM-MAGIC start GrammarMedium.pm start TestMedium/ start 30_parse_medium.t pack "f*" unpack same as above sysopen sysread syswrite STDPERL merge sort quick sort MATHPERL log_base_x tan, cot, sec, csc Math::Trig support Math::Complex support fractal, hsv coloring PHYSICSPERL n_body, add command-line option for SystemGasGiants.pm & SystemSSEGasGiants.pm n_body, optimize graphics speed WEB BACK-END asm.js and/or webassembly backend INSTALL NOTES update to use installed dirs, ~/perl5/lib/perl5 for local::lib DEV NOTES warning & error codes general code legend specific codes perlall WINDOWS Makefile.PL, replace pm_to_blib() with usage of File::Temp, do not modify files under lib/ or blib/lib or t/ etc. gmp in windows pass tests on vc2013 pass tests on appveyor activperl pass tests on activestate activeperl Appveyor http://blogs.perl.org/users/eserte/2016/04/testing-with-appveyor.html fix EU::MM + GNU make, missing slash; test building all of Perl & RPerl using gmake, CORRELATION #rp200 gmake: No rule to make target 'C:\...\libConfig.pm', needed by 'Makefile'. Stop. http://www.perlmonks.org/bare/?node_id=843384 https://rt.cpan.org/Public/Bug/Display.html?id=21129 http://stackoverflow.com/questions/9454961/extutilsmakemaker-and-supported-make-programs-on-windows MOBILEPERL Android http://blogs.perl.org/users/flavio_s_glock/2016/04/android-app-with-perl5-to-java-compiler.html MACINTOSH TEMP DISABLE Failed test 'Inline::CPP, call Airplane methods, return correct value 1' at t/03_inline_cpp.t line 146. '' doesn't match '/Object\ \(0x\w*\)/' unknown warning option '-Wno-literal-suffix'; did you mean '-Wno-literal-range'? [-Wunknown-warning-option] duplicate 'extern' declaration specifier [-Wduplicate-decl-specifier] XS_EXTERNAL(boot_eval_412_3a53); /* prototype to pass -Wmissing-prototypes */ /System/Library/Perl/5.18/darwin-thread-multi-2level/CORE/XSUB.h:145:33: note: expanded from macro 'XS_EXTERNAL' # define XS_EXTERNAL(name) extern "C" XSPROTO(name) OPENBENCHMARKS.ORG shiny content AUTOPARALLEL.COM shiny content PARALLELAPPSTORE.COM shiny content DATA TYPES & STRUCTURES enable subroutine argument type-checking of user-defined Class types, see "NEED UPGRADE" in Class.pm create_symtab_entries_and_accessors_mutators() disable use of 'constant_FOO' data types? currently converted in RPerl::Generator::type_convert_perl_to_cpp(), possible 'const const' conflict in RPerl::CompileUnit::Constant sort hash keys when generating string output in *hashref_to_string() CPPOPS Hash.cpp, as is done with 'sort keys' in PERLOPS Hash/Subtypes.pm determine if 'long long' or 'long double' can be used at all??? DEV NOTE, CORRELATION #rp041: GMP does not support 'long long' or 'long double', will cause t/07_type_gmp.t to fail scalar, scalar_arrayref, scalar_hashref, scalar_* implement 3-D arrays & hashes implement *OPS_*TYPES *_arrayref_arrayref_to_string() implement *OPS_*TYPES boolean_arrayref_to_string(), unsigned_integer_arrayref_to_string(), gmp_integer_arrayref_to_string(), character_arrayref_to_string() implement CPPOPS_*TYPES *arrayref_to_string() enable semi-dynamic auto-config of number format code for printf & friends in CPPOPS modes, replace %f by %"NUMBER" add remaining generic overloaded type conversion subroutines to_boolean(), to_integer(), to_unsigned_integer(), to_gmp_integer(), to_character() in rperltypes.* enable config of RPerl::NUMBER_EPSILON in RPerl/Config.pm to use either POSIX::FLT_EPSILON() or POSIX::DBL_EPSILON() http://perldoc.perl.org/POSIX.html#FLOAT PERLOPS_CPPTYPES conversion routines boolean_arrayref, unsigned_integer_arrayref, character_arrayref boolean_hashref, unsigned_integer_hashref, character_hashref gmp_integer_arrayref, gmp_integer_hashref sse_number_pair_arrayref, sse_number_pair_hashref enable looks_like_number() in *OPS_*TYPES (AKA all modes) use in string_to_NUMERIC*() (AKA all string conversion subroutines) to reject non-numeric characters with RPerl error instead of Perl error http://perldoc.perl.org/perlapi.html#looks_like_number export ::*_*ref_to_*() conversion subroutines the same as ::*_to_*() subs in rperltypesconv.pm, remove leading scopes in all calls remove all object* types add arrayref::grow_capacity() as safe version of std::vector::resize() Dumper() in C++, use as default overload for << implement remaining *_arrayref_arrayref_CHECK*() in lib/DataStructure/Array/SubTypes.cpp pre-declare RPerl::DataTypes and RPerl::DataStructures, as discussed in RPerl/DataStructure/Array.pm $properties, so this works: 'use RPerl::DataStructure::Array;' constant hashrefs and arrayrefs, via "use constant" pragma OR ":const" Perl internals attribute OR "constant_integer_hashref" data types :const supported in cperl only at this time add a sub integer::MODIFY_SCALAR_ATTRIBUTE, which handles :const `my integer $i :const = 1;` http://perldoc.perl.org/attributes.html integer class need only to accept or reject attributes. new() is not needed, neither @ISA the stash must exists. I do %int::; that creates the stash, so its valid syntax for :const I added the MODIFY_SCALAR_ATTRIBUTE function (into xsutils.c?) also MODIFY_HASH_ATTRIBUTE and so on, for every reftype, _ARRAY_, _CODE_, … PERL::CRITIC BUGS Eclipse EPIC Integration, Silent Failure https://github.com/Perl-Critic/Perl-Critic/issues/582 ProhibitMagicNumbers False Positive https://github.com/Perl-Critic/Perl-Critic/issues/631 Subroutines::RequireFinalReturn False Positive On Typed Loop Iterator https://github.com/Perl-Critic/Perl-Critic/issues/636 ControlStructures::ProhibitPostfixControls False Positives on Typed Loop Iterator https://github.com/Perl-Critic/Perl-Critic/issues/639 Argument "-" isn't numeric in exponentiation (**) at .../PPI/Token/Number/Exp.pm line 55 https://github.com/Perl-Critic/Perl-Critic/issues/665 InputOutput::RequireCheckedSyscalls False Positive On Typed Loop Iterator Without Final Newline https://github.com/Perl-Critic/Perl-Critic/issues/671 INLINE::CPP BUGS file bug, I::CPP comments, 7 lines okay, 8 lines broken file bug, I::CPP std::array file bug, I::CPP when attempting to return object type, CORRELATION #pp04 In function ‘void XS_PhysicsPerl__Astro__System_get_bodies_element(PerlInterpreter*, CV*)’: ... error: ‘CLASS’ was not declared in this scope ... sv_setref_pv( ST(0), CLASS, (void*)RETVAL ); hand-patched code below allows one-time use, then segfault vi build/eval_637_3400/eval_637_3400.c char * CLASS = (char *)"PhysicsPerl::Astro::Body" chmod a-w build/eval_637_3400/eval_637_3400.c PERLOPS_PERLTYPES build each class' properties_inherited() once at compile time in Class::INIT{}, will optimize runtime performance C++ subclasses using AV* instead of std::vector, etc? add symtab building and checking real SSE support (faster, not slower) ERROR CODES RPerl::CompileUnit::Module::Class (global base class) needs error codes added for all croak() or die() statements GRAMMAR allow comments with 3 or more chained octothorpe characters ### like this comment undef values, either remove from all possible locations in grammar for C++ compatibility, OR enable in C++ by special strings, numeric values, etc. fix 'x' string repeat operator vs 'x' string or bareword hash key, already fixed??? decide if we will allow '#!/usr/bin/env perl' as a SHEBANG, or only allow '#!/usr/bin/perl' style and allow EU::MM to mangle shebang on install? https://perlbrew.pl/Dealing-with-shebangs.html add WORD_LPAREN & WORD_SCOPED_LPAREN to become WordScopedLParen, and friends, to disallow space between subroutine name and parens in subroutine call update Learning RPerl section 4.2.1 & lib/RPerl/Test/Subroutine/program_* accordingly COMPILER uncompile, store list of compiled dependencies inside compiled files themselves, for optional use during uncompile figure out <> vs "" and also long-path-deps in includes in Bubble.cpp & Bubble.h compile Foo.pm add mutators pass-by-reference for scalars? see SystemRenderer2D::show() INTERPRETER Class.pm, remove auto-export of subroutines from their package's namespace into main:: namespace? RPerl::filter() update to properly handle *.pl files collapse newline characters from all added code to avoid artificially increasing line numbers in error messages, `rperl -t lib/RPerl/Test/Properties/Class_00_Bad_09.pm`