Clone wiki

scopes / Scopes Release 0.12

Scopes Release 0.12

Downloads

Documentation

Documentation is available online.

Changes

  • updated prompt to use a character that's printable on windows [00335e8c7af9]
  • operating-system is linux when on linux, macos on macOS, and unknown when the target is unknown [9415a8fc90c3]
  • replaced intrinsic definitions of sabs with a library function [1bf171c25f40]
  • changed operator precedence of bitwise infix operators | ^ & to have higher precedence than comparisons (rather than lower precedence, as in C) [1cdbe4d92895]
  • win32: fixed a weird bug where LLVMLoadLibraryPermanently would only load a library after dlopen has opened it once successfully. [c95287207aba]
  • removed byval attribute from values passed by reference [de5abf1d7bda]
  • unpack can be used on arrays and tuples [0769a9d7ecfe]
  • set usize's supertype to integer [09effc17c25e]
  • added introspective methods extern-type-location and extern-type-binding to interrogate location and binding attributes of extern values (particularly shader variables) [8f69faeca080]
  • retrieving an attribute from a value of type extern queries the type before trying the element type [bf0ff0d14c3f]
  • glsl: values declared with xvar use XVarType as immediate supertype [bf0ff0d14c3f]
  • glsl: added xvar bridge type inout that can be used as in/out simultaneously [7a7ee2df5b8c]
  • extern forwards basic arithmetic operators [4a59ea5bdd13]
  • added ~ operator for bitwise not [b212d0cb35c1]
  • pointer type returns mutable variant with 'mutable method [6d2a763a8cd7]
  • void(*) pointer type is now available as global constant voidstar [6d2a763a8cd7]
  • pointers always implicitly cast to voidstar [6d2a763a8cd7]
  • fixed an assertion error when a function recurses before the return type is known [c438d3742da0]
  • added defer macro to attach handlers to return values [a3c00623296b] [6c723b8759f6]
  • added 'from-pointer constructor for reference type [cceff05fd356]
  • fixed LLVM error when using store or free as return expression [cceff05fd356]
  • Scope-next takes and returns only keys of type Symbol rather than Any [d4d16bb02aea]
  • initial work on automatic reference documentation [b1814a82fb87]
  • new MutableArray module that implements an auto-growing mutable array type [b1814a82fb87] [2612b0b03d2e] [50c5bb9c389e] [5ad75ebb960f] [677829b21643] [75c9f4de2beb] [291c4a4f7bda]
  • a non-declarative form of struct allows to build the struct name from an expression [b1814a82fb87]
  • fixed LLVM error when bitcast is called with non-matching categories or aggregate type [2612b0b03d2e]
  • nullof allows construction of opaque types [2612b0b03d2e]
  • solver CLI has help command [f0d768357029]
  • fixed reference type converting imply to as [5ad75ebb960f]
  • added ability for types to specify reference conversion using as& [5ad75ebb960f]
  • added enumerate generator to prepend indices for another generator [5ad75ebb960f]
  • added repr support for arrays [677829b21643]
  • referenced types can now define their printable value using repr& [677829b21643]
  • reference class method from-pointer-type and from-pointer are now simple functions [ed89b05708b9]
  • added va-each allowing to iterate variadic arguments [75c9f4de2beb]
  • range will unroll if all arguments are constant [75c9f4de2beb]
  • fixed bitcast not allowing integer/float casts [4b366c14f18a]
  • fixed a problem where continuations were inlined that truncated their input arguments [ea6877761bf9] [9cd57af213de]
  • implemented normalize for LLVM IR and SPIR-V backends [ac4c2e600b47]
  • implemented cross for SPIR-V and LLVM IR [08c7cfdc649e]
  • let: attempting to bind names to too many arguments when the last name isn't variadic is now an error [b8807690704b]
  • pow dispatches to powf or powi depending on input arguments [4f9562258c6f]
  • ** infix operator dispatches to pow now [4f9562258c6f]
  • REPL: console prints and stores multiple return values [052765594ebb]
  • let no longer returns the first assigned value [ccf09723295b]
  • removed obsolete syntax-apply-block builtin macro [f78083195e11]
  • label no longer continues into parent scope by default; continuations have to be called explicitly. [18e368a369d1]
  • breakable-block macro allows an in-function block that can be exited early (used by for and while) [18e368a369d1]
  • del macro allows to unbind names [065a9da72f87] [815e297b2e48]
  • added internal __defer macro that allows to capture scope variables before a scope exits [025ed4222e39]
  • let declarations in the REPL do now persist [025ed4222e39]
  • keep current scope persistent in REPL, so that using import and similar macros work as expected [d89eb5c261d2]
  • print uses repr instead of converting the value to Any [d89eb5c261d2]
  • glm: proper repr string for vector types [d89eb5c261d2]
  • added fold function [74f6e6b17cc4] [7b35346f38c8]
  • added map function [50aaea9ad7e3] [7b35346f38c8]
  • added declarative enum syntax and test [51853485a489] [3cf2e265ff93]
  • refactored TupleType to store constant values and keyed arguments [988034bc2664]
  • typename constructor, as well as fnchain must now be invoked with unique token to break memoization; the builtin typename-type does not have this restriction. [f2c57499bb1a]
  • ensure that struct declarations are unique [8aeae974ee4b]
  • added from macro that allows to quick-assign keys retrieved with @ to local variables [7f768b251948]
  • always allow bitcast when the underlying storage types are the same [0475a0bf4b40]
  • added verify-stack! utility function to detect stack overflows during debugging [3149498b226f]
  • added hashing intrinsics and hash dispatch operator [534623ef8bae]
  • new hash type supports built-in hashing of many basic types [f05937d40885]
  • Make tab autocomplete in the REPL (thanks to Matt Keeter) [6daafc592951]
  • added source credits [af600474ed49]
  • values created with global will be properly serialized on object compilation [35ad94f7e8c0]
  • cleaned up tests, removed tests that are no longer used [e8546e02ebd2]
  • test_all now prints a list of failed modules in the summary [e8546e02ebd2]
  • unconsting a compilable label demotes it to a function pointer [ff2dec470c15] [3d5b96eb9674]
  • implicitly casting a Closure to a function pointer type now no longer opens a new translation unit [3d5b96eb9674]
  • added basic new and delete operator to help allocating values on the heap [a744506c94ac]
  • fixed struct union definitions using tuple storage type rather than union [857e96072d17]
  • tuple-type and union-type type constructors now take named arguments and constants [7cbb7be5234e]
  • removed set-typename-fields! as well as typename-field-index and typename-field-name [7cbb7be5234e]
  • added element-name and element-type to query tuple and union named arguments [7cbb7be5234e] [9037ea505597]
  • fixed variadic and non-const arguments in last place causing argument keys to be ignored. [9037ea505597]
  • the keys of non-appended variadic arguments are forwarded if not overriden. [9037ea505597]
  • struct field names are now forwarded as tuple/union constructor keys. [9037ea505597]
  • added va-key builtin to dynamically create keyed arguments [e80a268ab411]
  • tupleof supports keyword arguments now [e80a268ab411]
  • LLVM IR: move all stack allocations to each functions entry block to ensure loops do not accidentally grow the stack. [7c240bcdb518] [2451ec6094e6]
  • alloca-array now returns a pointer with function storage type [c4dbaf3c8d8b]
  • removed macro var [be1b54070427]
  • added local value constructor, which does the same thing as new, but on the stack [be1b54070427]
  • numerical types can be initialized with no argument [be1b54070427]
  • the default constructor for new typenames returns a zero-initialized value [be1b54070427]
  • new and local accept 'copy symbol in place of class name to explictly invoke a copy constructor [b1024bc3bd04]
  • xpcall uses new intrinsic alloca-exception-pad which on win32 is kept close to the setjmp call to avoid causing a segfault. [4c3d13d7b385]

Updated