You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.