Skip to content

1.98.0

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 03 Sep 18:38
· 35 commits to master since this release

Features

  • Support . separated names in meta values. E.g., name some.module. This makes writing references declarations much more natural.
  • Support is, new, ~ (type cast) and static calls with qualified names (Prexonite namespaces)
  • Remove println("$EXPR = ") = wrapper from REPL (the generated byte code becomes easier to understand)

Breaking Changes

  • AstTypecheck: replace file-line-column constructor with ISourcePosition constructor. This means Prexonite code using psr\macro needs to construct instances using ast3 instead of ast.
  • AstGetSetStatic: replace file-line-column constructor with ISourcePosition constructor. This means Prexonite code using psr\macro needs to construct instances using ast3 instead of ast.
  • AstConstant: constant is now readonly
  • AstTypecheck not longer has an IsInverted property. As a result, AST factory UnaryOperation no longer automatically handles partial application of ? is not T. There is no replacement.
  • In Prexonite Script 2, object creation, type checks, type casts and static calls require the import of sys.* (or sys.rt.builtin.* or prx.core.rt.builtin.*)
  • Removed the concept of type expressions from the language. This means you can no longer pass e.g., ~String, i.e. the concept of the type String, as a type parameter to another type. This feature has not been used at all since the inception of Prexonite. Constant and dynamic value parameters are still supported.
  • built-in types (or any registered PTypes) are no longer privileged over "fallback" functions. That means a locally defined is_String function will supersede the built-in is String implementation. (Previously, custom type operations were only used as a fallback if the type isn't registered)
  • Type operations need to be declared at compile-time. For Prexonite 1, the loader automatically will declare symbols for each registered type. For Prexonite 2, symbols will have to be declared (e.g., by providing a companion module).
  • Use / as the separator for module name versions. The , was used in analogy to .NET assembly names, but as Prexonite Script itself uses /, it's weird to have the Prexonite Engine use a difference character.

Bug fixes

  • name psr::pattern:test/2.0; now results in an error ( : instead of :: )
  • ArgumentNullException for println(?*) (incomplete binary expression). It's now a proper error.
  • Proper error handling for accidental use of :: in namespace declarations.

Internal Changes

  • Run test suite in parallel