Clone wiki

scopes / Scopes Release 0.8

Scopes Release 0.8

Downloads

Documentation

Documentation is available online.

Changes

  • added Scope-next to permit iterating keys and values in Scope values [2d18123bcdb4]
  • Symbol can be cast to string [240e18c25b17]
  • added simple regex string matching function string-match? and test [14bb952fb8d4]
  • added rawstring type that maps to const char * [14bb952fb8d4]
  • string can be casted to rawstring [14bb952fb8d4]
  • support for resolving field by name using typename-field-index [14bb952fb8d4]
  • added typename-type? and typename? helpers [14bb952fb8d4]
  • getelementptr supports addressing fields by symbolic name where possible [14bb952fb8d4]
  • added load-library to permit dynamic loading of C libraries [14bb952fb8d4]
  • added nullof as a zero initializer for types [14bb952fb8d4]
  • added alloca-array and malloc-array to permit allocation of arrays with dynamic size [55aee2445b39]
  • renamed super to superof and made it a builtin function [55aee2445b39]
  • all basic supertypes are now builtin [55aee2445b39]
  • calling superof on a typename without a set supertype returns typename [55aee2445b39]
  • set-typename-super! can be used to set the supertype of a typename [55aee2445b39]
  • solver is now aware of overloaded call handlers in supertypes, so calls to builtin subtypes can now be overloaded [55aee2445b39]
  • overloading call for function pointers is now possible. [c1091f3dd0c3]
  • rawcall invokes the builtin call operation of a type without considering any overloads. [c1091f3dd0c3] [bd66cd0c3d2d]
  • added delete-type-symbol! and delete-scope-symbol! to permit removing values from scopes [ec23ab662ddf]
  • added type-name function to query the name string of a type [7423960239ab]
  • repr can now be overloaded [7423960239ab]
  • added reference type to abstract away pointers [4e9f0437f64f]
  • added var macro to declare addressable values [4e9f0437f64f] [858a9b566ad0]
  • fixed -s option not parsing any more arguments [4e9f0437f64f]
  • arguments are compared to function signature based on storage type [4e9f0437f64f]
  • type@ now searches symbol in super types as well [4e9f0437f64f]
  • operator = can be used with pointer type [4e9f0437f64f]
  • fixed a bug where an infix expression would not expand if the first symbol was unknown [df98bcd9be98]
  • added builtin macro syntax-log true|false that allows tracking/debugging the macro expansion process [df98bcd9be98]
  • calls now support keyed arguments when the target label is known. regular arguments and keyed arguments can be mixed; regular arguments are mapped greedily to first free parameter. [9e91dd16df44] [7603810806e4]
  • support for variadic keyed parameters. [9e91dd16df44] [7603810806e4] [74abf1e08f50]
  • if va@ is called with a symbol as first argument, the argument with the corresponding key is being selected. [9e91dd16df44]
  • imported C structs, unions and enums now have individual supertypes, CStruct, CUnion, and CEnum. [7603810806e4]
  • added va-empty? function [7603810806e4]
  • apply-type overloads are now being called with the called type as first argument [7603810806e4]
  • renamed extern builtin to extern-new, extern is now the supertype [7603810806e4]
  • element-type can be called on extern values [7603810806e4]
  • keyed arguments also work on values whose types have overloaded call handlers [7603810806e4]
  • keyed arguments are now handled by the solver, and captured by regular varargs
  • added va-keys builtin to extract variadic key names [7603810806e4]
  • support for C struct initializers [74abf1e08f50]
  • pointers can be cast to element type [74abf1e08f50]
  • extern values can be cast to element type and pointer type [74abf1e08f50]
  • clang bridge: enum values are exported with the enum type, not the tag type [858a9b566ad0]
  • performing getattr on pointers to typenames with fields returns a reference [858a9b566ad0]
  • references pass through comparison, arithmetic and bit-arithmetic operations [858a9b566ad0]
  • var supports second syntax for declaration of dynamic arrays on the stack [dfdcf92dcd3d]
  • pointer supports @ operator and returns reference to item [dfdcf92dcd3d]
  • added overloadable softcast operation for implicit casts [ad1d78766461]
  • enum lowers to integer for most arithmetic operations [3a53895a5864]
  • initializing a reference with a reference copies by-value [2c3fdb4e0fc4]
  • fixed locals to return a fresh, parentless scope that contains only local symbols [bb0a76bd9a60]
  • import-c also imports all macros bound to numeric literals [fe8eea3ae89a]
  • types can now return references to members via overloading getattr&, which receives a value of pointer storage type [ba16a926d1b9]
  • CStruct and CUnion both implement getattr& [ba16a926d1b9]
  • overloaded extern call operator supports variadic C functions [ca545fc54710]
  • null softcasts to nullpointer types, so can be passed as NULL argument to extern C functions [253043104171] [3917508bfa16]
  • if a pointer type is instantiated without arguments, it returns a null pointer [d9365733d539]
  • softcasting a label to a function pointer type typifies and compiles it [d9365733d539]
  • new macro global to declare mutable values that can be used in callbacks [d9365733d539]
  • functions can no longer be polymorphic at runtime. compile time polymorphism is not affected. [d9365733d539]
  • import-c also parses string defines [267a7469c0dc]
  • import-c also binds define aliases [09a637783d16]
  • integer ops with two arguments attempt to softcast the other value when possible [ca9a4680b86c]
  • integer performs truncations on softcasts when the argument is constant [ca9a4680b86c]
  • not attempts to softcast argument to bool [ca9a4680b86c]
  • new match macro that helps with writing switch-like cases [ca9a4680b86c]
  • raise error when encountering untyped parameter rather than causing a C assertion [14b93f9cd6ee]
  • untyped parameters are of type unknown rather than void [500e15c811e7]
  • renamed typed-label type to to return-label, removed first argument which is always of type Nothing [6c2bf19b3f92] [b3f980ba0ed0]
  • solver uses frames and closures to partially evaluate labels rather than mangling [a5a17bc6ad0a] [6017b8f05c07]
  • improved traceback printing to only include functions that would be in the stack during execution [584ff39e57af]
  • syntax-extend sections are now executed during type solving, so constant upvars become available. the remaining section is then expanded and solved. [57e8cdb7c3db]
  • added timers to profile execution times [33a2974ef1f9]
  • LLVM IR generator eliminates basic blocks with single users [33a2974ef1f9]
  • fixed clang support for win32, added clang test [d268c71cc08a] [31595a620094]

Updated