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
    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
    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
