Skip to content

Releases: Rhovas/Interpreter

Rhovas v0.0.1

12 Jul 00:25
Compare
Choose a tag to compare
Rhovas v0.0.1 Pre-release
Pre-release

The initial release of Rhovas! A complete changelog would be incredibly difficult, but here are some highlights:

  • Implemented core statements/expressions
    • Includes standard statements (if/for/while/etc.)
    • Includes match statements, pattern matching, and destructuring
    • Includes require/ensure statements for contract assertions
    • Includes standard expressions (literals, unary/binary operators, functions, etc.)
    • Includes syntax macros using interpolator transformations
    • Includes pipelining (supports extension functions)
    • Includes bang invocations and exception/result isomorphism
  • Implemented classes/structs
    • Includes fields, constructors, and initializers
    • Does not include inheritance (or interfaces)
  • Implemented typechecking and semantic analysis
    • Includes types for generics, variance, and tuples/structs
    • Includes analysis for type checking and inference
    • Includes analysis for initialization, control flow, and exceptions
  • Implemented the standard library (or at least some of it)
    • Includes basic types (Boolean, Integer, Decimal, String, etc.)
    • Includes basic data structures (List, Map, Set, etc.)
    • Includes key interfaces (Equatable, Comparable, Iterable, etc.)
    • Includes standard functions (input/print, Math, and even a regex DSL)
  • Added a REPL environment
  • Added support for JavaScript targets (in addition to JVM)

Thank you to everyone who's helped get it to this point!


A note on release versions: v0.0.1 is the initial release, and can be considered as SemVer compatible treating the first non-zero number as the major version. In effect:

  • v0.0.major is effectively "anything goes" (where we are now).
  • v0.major.minor provides some degree of compatibility information, however breaking changes are much more likely between releases as the language is still evolving.
  • vmajor.minor.patch is standard SemVer.

It is intended for v0.1.0 to represent the "everything planned is implemented" (and not totally broken) release. There's no set plan for what constitutes a v1.0.0 release, but there is no intention in being stuck in ZeroVer.