DONE

DOING
    replace @_ with @ARG in system code
    'cannot' -> 'can not' in all docs & source files
    execute via compiled copy not interpreted
    uncompile w/ corrupted or missing PMC, CPP, H files
    uncompile delete EXE files
    disable variable declaration w/out initial value, grammar & tests & docs
    Learning
        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
    Inline::RPerl
    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

CODE GENERATION, CPPOPS_CPPTYPES MODE
    ForEach.pm
    finish .pl body generation
    subroutines, final operation must be return operator
    WHAT ELSE?!?

INSTALLERS
    Linux DEB
    Linux RPM
    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
    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 2 - 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
    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

PHYSICSPERL
    nbody, optimize graphics speed
    fractal, hsv coloring

WEB BACK-END
    asm.js and/or webassembly backend

EYAPP
    Eyapp unescaped left braces for Perl v5.22 compatibility
        Unescaped left brace in regex is deprecated, passed through in regex;
            marked by <-- HERE in m/\G%{ <-- HERE /
            at /home/wbraswell/perl5/lib/perl5/Parse/Eyapp/Parse.pm line 3239.
    Typo "synopsis" on bug tracker
    CPAN release

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
    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
    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
    C++ subclasses using AV* instead of std::vector, etc?
    add symtab building and checking

ERROR CODES
    RPerl::CompileUnit::Module::Class (global base class) needs error codes added for all croak() or die() statements

GRAMMAR
    remove 'undef' from all possible locations in grammar for C++ compatibility
    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

COMPILER
    Monolithic Modules, Fix Deps Warning
    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?
    update RPerl::filter() to properly handle *.pl files
