Clone wiki

scopes / Bangra Release 0.5

Bangra Release 0.5



  • Renamed slist type to list. [6ad64176795e]
  • Added builtin function next-key to permit iterating keys and values of tables. [6ad64176795e]
  • Flow objects can be declared with symbolic names to help with debugging. [98f0ebc48c96] [5fea178a13de] [c38752764396]
  • Integer division results are of type double. Use // (floordiv) to do integer division. [5bab3242405e]
  • - and / operators support single argument, perform negation and reciprocal respectively. [5bab3242405e]
  • Fixed import-c not importing library symbols [200880063f7f]
  • Builtin function cstr converts rawstring to string type. [200880063f7f]
  • Added builtin function external to declare and import C library symbols. [c0c224b724ae]
  • Added type constructor for pointer. [c0c224b724ae] [eab3b5b1a15b]
  • Renamed builtin function cdecl to cfunction and made it a type constructor. [bba6f473f2eb] [eab3b5b1a15b]
  • Added reflection API for closures, frames, flows and parameters. [f56d34a83c0a]
  • Support for three or more arguments to and and or operators. [d4aa8862690a]
  • Improved ANSI color support in interpreter. [819806e14a26]
  • Fixed ANSI always on for certain types. [bb0eb0868ef6]
  • Pointer values can be associated with a name. [3ba626edfa2f]
  • Improved copy elision by using a double buffering scheme for execution. [4c695972f41b]
  • Excess function arguments are truncated from calls, missing arguments default to none. [ff993790b15c] [c38752764396]
  • Internally, the continuation argument is always at index zero. [c38752764396]
  • Improved debug output for trace mode. [c38752764396]
  • Replaced special form function with continuation that takes a continuation as explicit first parameter when any parameters are defined. [ca7126d88bbd]
  • function is now implemented as a macro. [ca7126d88bbd]
  • An auto-defined return continuation in functions allows to return to the calling function from any point in the function. [ca7126d88bbd]
  • Support for variable arguments and trailing argument matching. A parameter name that trails with ... captures all remaining arguments in a tuple, minus any explicit arguments defined after it. [469574e18eee] [4ed0825305c2] [09cd1d4126ea]
  • Added argument splicing for tuples and lists. When performing a call, wrapping a tuple or list value with a (splice ...) type modifier splices its elements into call arguments. Any type can support splicing. [8aabe779a511] [74020eb9dd48]
  • Added support for ordered comparison of tuples. [cf0d61d35863]
  • Changed let syntax: let name value is now written as let name = value, to make bindings more readable and fit better with contemporary declarative styles. [0835a02abe10]
  • New additional syntax for let: let name1 ... nameN = expression unpacks a tuple into multiple variables. Variable arguments work as expected. [cf0d61d35863] [222eccfad724] [2416a3180b0a]
  • All immutable types that fit into 8 bytes or less are now directly embedded in fat pointers, which saves a ton of temporary allocations. [ecd20d54636e] [3fb88c755452]
  • Removed call/cc, as continuations are now accessible from the language. [78653eff3890]
  • Added exception handling support via try/except block macro. [78653eff3890]
  • Added flowcall to permit calling continuations without a return closure. [78653eff3890]
  • Removed the := infix operator to encourage usage of let, whose declarations are easier to extend. [e053c43092be]
  • Changed escape to become a builtin function that modifies values with a quote type modifier. Macro expander and compiler strip this modifier and pass the content as-is. [f3099dc528a8]
  • Subtype checks can now be performed using all comparison operators (== != > >= < <=). S is a subtype of T if S < T evaluates to true. [a1d25d288173]
  • All supertypes (integer real tuple array vector tuple struct enum) are now exposed to the language and can be used as type constructors. [eab3b5b1a15b] [bf8d7b7495db]
  • Added hashing as a type-dependent feature using the builtin hash function. Most values can be hashed now. [69f522827502]
  • Tables now permit any hashable value as key. [69f522827502]
  • define macro allows to directly bind names to constant values and functions at macro expansion stage. [1c54e73476de]
  • Fixed the broken % infix operator. [1c54e73476de]
  • Fixed syntax-extend producing an error after one successive statement. [1c54e73476de]
  • The None type has been removed and replaced by void, so that void == (typeof none). [0835a02abe10]
  • Changed macro argument order from (scope expression) to (expression [scope]) to permit an optional scope argument. [6ea4cedbfc72]
  • Macro decorators have been renamed. syntax-single-macro is now macro, syntax-macro is now block-macro. [ca1fe1d61cb5]
  • New block-scope-macro decorator to permit macros to switch or patch lexical scope. [ca1fe1d61cb5] [5c27b0c3424d]
  • Renamed length operator to countof. [471247af20eb]
  • implemented countof and slice for lists. [66dfd6aa140e]
  • list type uses standard indexed access now, can no longer be used to slice the list. [d17a3e7c6aa3]