@bwittman bwittman released this Jul 28, 2017 · 7 commits to master since this release

Assets 5

This Shadow Reference Compiler 0.7.5 Beta release includes the following major language features:

  • Classes
  • Interfaces
  • Singletons
  • Exceptions
  • Fields and local variables
  • Methods
  • If and switch statements
  • Loop structures
  • Arrays
  • Immutable classes and references
  • Operator overloading
  • Generics
  • Standard library
  • Garbage collection

Syntax changes:

  • All inner classes are now "static" in the sense that they are not connected to a particular outer class object
  • No more multi-dimensional arrays: Shadow only has arrays of arrays (like Java), no single arrays with multiple dimensions (like C#)

Improvements over the previous release:

  • Addition of reference-count garbage collection
  • Move to Antlr4 for the grammar, simplifying many aspects of the compiler
  • More parse errors reported (instead of quitting after a single parse error)
  • Extensions to make it easier to call C code from Shadow (and Shadow code from C)
  • All generic classes are generated at compile time, removing the need for a complicated dynamic run-time generic (and array) class generation system
  • Improved compilation speed
  • Much better Mac support
  • Partial compilation to optimized .bc binary bitcode files instead of the unoptimized, bulkier, human-readable .ll IR files
  • Expanded standard library
  • Dynamic creation of generic class objects when necessary
  • Shorter and less repetitive type-checking errors
  • LLVM 3.8 and higher support (addressing a breaking change in LLVM IR syntax)
  • Better integration with Eclipse plug-in
  • Better installation scripts
  • Countless bug fixes

Major language features not included in this release are:

  • Threading and message passing (though these features are close)
  • Method references
  • Local methods (closures)
  • Enums

Other smaller issues not included are:

  • Faster and more accurate conversion from floating point values to String representations and back
  • Standard library classes for networking, GUI, and many other useful things