DONE
DOING
RPerl tests, number_arrayref_arrayref & string_arrayref_arrayref
test $return_whole_value accessors & mutators for RPerl-defined data types in Class INIT block
test $return_whole_value accessors & mutators for user-defined data types in Class INIT block
Installer, CentOS 7 Support, copy from LAMP Installer to RPerl Installer
MongoDB C++ driver in installer
MongoDB documentation
manual IS file changes
3D data structures
*_arrayref_hashref_hashref
stringify
typetest
t/06_hash
*_*ref_*ref_hashref
*_*ref_*ref_arrayref
2D data structures
*_*ref_*ref
To_string() for each data structure in C++, to_string() in Perl
# DEV NOTE, CORRELATION #rp031: NEED UPGRADE: implement proper @array vs $arrayref, %hash vs $hashref, dereferencing, etc.
Scalar.pm, ArrayDereference.pm, Keys.pm, HashDereference.pm, etc.
add support for non-reference @arrays and %hashes
re-align PERLOPS_PERLTYPES w/ CPPOPS_CPPTYPES behavior for pass-by-value vs pass-by-reference
figure out how to add data types to PERLOPS_PERLTYPES @array and %hash variable declarations
std::vector should be array and std::unique_ptr<std::vector> should be arrayref, etc.
ArrayDereference & HashDerefence operators should actually dereference (unwrap) std::unique_ptr in CPPOPS_CPPTYPES, deref AVRV to AV in CPPOPS_PERLTYPES, etc.
implement pertinent operators: scalar, keys, values
stringify functions integer_array_to_string(), number_array_to_string(), integer_hash_to_string(), number_hash_to_string(), etc.
somewhere in physicsperl or mathperl, there is a fake reference unwrap function for Perl, possibly for GMP or SSE or some other special C(++) data type
foreach() loop and keys() operator in CPPOPS_CPPTYPES
.travis.yml, disable dev version of Alien::Base::ModuleBuild v1.01_01, update min version required in Makefile.PL
.travis.yml, disable Alien::GSL testing, update min version required in Makefile.PL
META files in MANIFEST.SKIP???
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
Alien::zlib??? for SDL dependency on zlib.h, get SDL to add Alien::zlib as CPAN dependency; Alien::zlib::Static already exists but is it applicable?
Alien::PkgConfig??? for MongoDB driver build support
Alien::MongoDB???
Alien::MongoCXX???
Alien::Pluto
CPAN testers stability
Alien::Texinfo
add minimum version checking when Alien subsystem supports it in non-PkgConfig software like Texinfo
Alien::astyle upgrade to EU::MM
Alien::bison
Alien::flex
Alien::GSL
Program.pm: convert rperl*.h to RPerl/Support/*.h and RPerl/Support/*StandAlone.h, as in RPerl/Support/MongoDB.h [ SSE GMP GSL ]
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::GMP
detect non-C++ system install (missing gmpxx.h) and force Alien::GMP share install instead
Alien::PCRE2
ensure tests pass on both share & system installs
replace mirrored DEV version (Windows bug fix) w/ new official version when released
same as cygwin failure below???
warning: "FWRITE" redefined ... error: _O_BINARY undeclared
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
MySQL
PostgreSQL
MongoDB
ConstructorCall.pm: add support for MongoDB::MongoClient constructor parameters other than 'host'
Inline.pm: add Alien::PkgConfig & Alien::Mongo* dependencies; add error checking for missing pkg-config or bad return value
Makefile.PL: handle "v1.8.0" v-string properly in PREREQ_PM
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?!?
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
names can NOT include double-underscore, C++ standard
names can NOT start with underscore uppercase, C++ standard
variable names can NOT start with underscore, defined by VARIABLE_SYMBOL in Grammar.eyp
global subroutine names can NOT start with underscore, C++ standard
non-global subroutine names can start with underscore, C++ standard
method names ???
property names ???
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?
...
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
CLOUDFORFREE.ORG
release Apache2::FileManager v0.3 based on current github code
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)
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 <noncode> on metacpan, elsewhere
check X<break_code_blocks> 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
BOOK OF RPERL
chapter 5
MISC DOCUMENTATION
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
CORRELATION #rp140: `rperl ./some_program.pl` fails to run binary executable after compile, when PATH does not include '.'
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
DatabaseMongoDB: errors, additional test cases
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 (ECOGEASRP021: 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 ECOGEASCP030?)
get_raw() & set_raw()
t/13_compile_execute.t (?) for proper functionality
*_arrayref_arrayref_arrayref
while (my FOO)
<$FILEHANDLE>
@ARGV
%ENV
ERROR ECOGEASRP016... named operator [SOMEOP] requires exactly one argument, dying
ERROR ECOGEASRP017... 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 ECOGEASRP023
invalid OO property name (hash key) starting with non-lowercase-letter ECOGEASRP024
invalid type inner redundant name starting with non-lowercase-letter ECOGEASRP025
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
t/04 t/05 t/06 directly test *_CHECKTRACE() and *_CHECK()
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
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.
MOBILEPERL
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.*
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
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;`
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_, …
VARIABLES
allow block-scoped variables; currently supported for unique variable names, triggers false error ECOGEASCP012 "already declared in this scope" for non-unique variable names in the same subroutine
PERL::CRITIC BUGS
Perl::Critic::Policy::Subroutines::ProtectPrivateSubs, false trigger on 'my Foo::Bar::_MyClass $foo;', presumably thinks _MyClass is a private sub
INLINE::CPP BUGS
remove all usage of double-underscore in identifiers, including auto-generated class names where '::' is replaced by '__'
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
fix all mis-matching *RPxx vs *CPxx error codes, compare all numeric error codes to ensure RPerl matches C++
sort all error codes according to dev_notes.txt code ranges
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???
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
should VARIABLE_SYMBOL be allowing scoped variable identifiers, since these are not currently supported by the compiler?
should LITERAL_STRING allow single-quote strings which contain an odd number of backslashes? 'howdy \@array' and 'howdy \\@array' are identical in Perl but only the second is allowed in RPerl
upgrade OP18_TERNARY to support 'SubExpression COLON SubExpression' instead of just 'ScalarVariableOrLiteral COLON ScalarVariableOrLiteral'
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`