Skip to content

Neolithic Alpha v0.3.1 - The mysteriously missing release.

Pre-release
Pre-release
Compare
Choose a tag to compare
@splendidnut splendidnut released this 01 May 12:59
· 85 commits to main since this release

v0.3.1 -- Forgot to tag v0.3.... and there have been a few commits since then


Changes from previous version


FEATURES:

  • Added "alias" identifier types to allow name aliasing of variables / variable references.
    These help the compiler generate more optimal code when referencing a specific element
    of an array of structs.

  • Added more functionality to enums:

    • Un-named enum lists now work. Each enum value gets added to main symbol table as consts.
    • Named-enum lists have their own scope. Using one of the enumeration values within now requires
      referencing with the enum list name. This is mainly to put them in-line with how named-structs work.
  • Added a bit more functionality to array references.

  • Started adding some command line parameters.

      Run 'neolithic' without any arguments to see the list.
    
  • Started adding more compiler directives.
    + #echo
    - Allows user to print debug information during compile-time.
    + #use_quick_index_table
    - Allows user to specify that an array should have an index table created to
    make element access quicker... mainly useful for array of structs.

  • Begun to write test cases for all the features of the compiler.


BUG FIXES / IMPROVEMENTS:

  • Fixed some tidbits with the assembly processing and opcode support.
  • Switched more of the assembly ops to display as variable references instead of just absolute memory addresses.
  • Fixed call-tree analysis to help eliminate some problem cases with overlapping variables.
  • Improved assembly output to show missing source code lines case statements, do-while).
  • Fixed tokenizer to process tokens up to 82 characters in length.
    This was fixed to allow supporting long string literals for #echo.

UNDER THE COVERS:

Compiler memory usage optimization and cleanup.

  • Added separate allocation functions to help track memory usage.
  • Major cleanup/rework of the compiler symbol table / record subsystem.
    Basically, a lot of things were consolidated and/or simplified.
  • Added in hash-based identifier storage system.