Clone wiki

scopes / Scopes Release 0.10

Scopes Release 0.10

Downloads

Documentation

Documentation is available online.

Changes

  • fixed mangling to always process labels in deterministic order [64df3f0844da]
  • SPIRV: support for Image and SampledImage type constructors [bf77d11a4a1a]
  • SPIRV: new sample instruction to permit sampling from textures [bf77d11a4a1a]
  • rearranging or copying scopes without changing the contents can be done via cloning, which uses shared references to avoid duplicating symbols [3462d9880a98]
  • using import clones the imported scope rather than copying all symbols [3462d9880a98]
  • ensure module-path does not become part of module's locals [3146bff6c712]
  • fixed faulty debug info when the ABI requires by-ref arguments [08b2c02f97b8]
  • win32: fixed crash when declaring globals [08b2c02f97b8]
  • __builtin_va_list uses a storage type the size of va_list [cc89a77ede43]
  • win32: disable strict aliasing for compilation [f2a5c8683cc3]
  • clang bridge: fixed error when attributed type is encountered [f2a5c8683cc3]
  • win32: fixed crash when calling load-library [62cdab14dc8a]
  • caching patterns passed to string-match? [c31e847eee77]
  • all backends: optimizations are turned off by default, and can be gradually enabled by passing 'O1 'O2 or 'O3 to the compile functions [b9dab7fe2b22]
  • reorganized distro structure: the binary is now always located at bin/scopes. compiler-dir points to the base directory. the boot file now resides at lib/scopes/core.sc [373c286b61a8]
  • replaced require with require-from which needs a relative dir to import from [c27c71931e36]
  • removed current working directory from search paths [c27c71931e36]
  • import: prefixing a module name with a dot imports from the module's directory [c27c71931e36]
  • import supports nested module names [c27c71931e36]
  • clang bridge ignores symbols with c++ linkage [8a747f490a21]
  • clang-bridge: improved compatibility with C code that interacts with C++ code. Specialized templates are translated as aligned buffers. Alignment errors are corrected. Structs are converted to packed if the alignment doesn't fit. Declarations with C++ linkage are skipped. [6cf0151b9f85]
  • added support for packed tuple type [6cf0151b9f85]
  • fixed a typo in using [8a4b604dc92f]
  • fixed accidental classification of tuples as mrv in LLVM IR generator [483d8d7ba136]
  • added Generator type that other types can be casted to to form an iterable value [483d8d7ba136]
  • support for iterating scopes [483d8d7ba136]
  • double dot in a module import name can be used to go one level back [867cde47ed46]
  • module is cached by its realpath [867cde47ed46]
  • clang bridge: export struct types to namespace if the name is free [82a06f2019a8]
  • changed default colors to match the tomorrow night scheme for scopes in VSCode [ff0bda92d4c2]
  • added va-keys to quickly transform arguments to types [080f51211b73]
  • added getattr for immutable struct fields [080f51211b73]
  • added typefn macro to aid in declaring type functions [035fe940a8ec]
  • added set-typename-fields! which allows setting field names for a typename [f5f5db1b9ce4]
  • added va-values builtin to strip keys from keyed arguments [fcc1f29c7e6d]
  • added type constructor for CStruct [fcc1f29c7e6d]
  • added fnchain type that makes it easy for modules to register event handlers at compile time [a9864a66cdb7]
  • fixed references not casting to their immutable pointer type [3d2ec10c642c]
  • current working directory at start of REPL is bound to module-dir [922566a33f59]
  • references to arrays implicitly cast to pointer to element [7e1b379b23af]
  • indexing into reference attempts to get a reference index [7e1b379b23af]
  • array supports reference index [7e1b379b23af]
  • CEnum implicitly casts to i32 [1086696d4b39]
  • import-c has two default search paths: compiler-dir/include and compiler-dir/lib/clang/include [7135c557617b]
  • struct definition syntax [121509666f19]
  • discover and mark reentrant functions during solving [51df9ea163c5]
  • do not inline trivial but reentrant functions [51df9ea163c5]
  • always recurse into labels to ensure they're complete when we return, and truncate non-reentrant parameterless labels as much as we can [6d18bc336531]
  • a few smaller optimizations that should improve compile times by a few ms [d85806e2ad9a]
  • inline trivial functions based on instruction count [079a4887c0cf]
  • added main-module? flag for modules that allows to check if the module is called directly or is being imported [18688814c9da]
  • extern declarations for SPIR-V use storage class names from specs / spirv.hpp rather than our scopified version [68484623a64e]
  • added builtin set-execution-mode! to change execution mode parameters for shaders [87272d8f8884]
  • shader specific attributes to extern are now keyed as storage for storage class and index for location and binding [067e3f168c6e]
  • support for readonly writeonly coherent volatile and buffer flags for extern values [15321c3f7171]
  • initial support for pointers with different storage classes [43433d70b5c7]
  • reworked pointer interface: pointer-type takes two additional arguments, access flags and storage class. Pointer attributes can be changed individually through pointer-type-set-*. Flags are exhibited as pointer-flag-*. The pointer type got several access methods that make it easier. [9dea07f07d6d]
  • references are constructed from pointer type, not element type, to keep pointer flags and storage class intact [9dea07f07d6d]
  • added Image-read and Image-write builtins [1cd45b58fd54]
  • extern index has been split into location and binding [1cd45b58fd54]
  • SPIR-V generator decorates array types with stride [1cd45b58fd54]
  • fixed constant getelementptr and bitcast instructions not being folded [d5d4b8a54d70]
  • added offsetof builtin [d7cc74f831eb]
  • casting syntax objects to non-matching type raises a contextual error [c9b81d3e9c0b]
  • improved traceback printing [4479b1f4bbf4]
  • added support for keyed return values [a6049177366f]
  • type-countof returns 1 for pointer, extern, image and sampledimage [1625ae5956bb]
  • element-type can be used on image and sampledimage types [1625ae5956bb]
  • added compile time scope constructor scopeof (all arguments must be constant) [3196714237a9]
  • SPIR-V backend reduces image return type to elementary type [3196714237a9]
  • image type has nicer repr [3196714237a9]
  • added source locations to generated spir-v code [d16d75339d18]
  • always inline functions that return pointers with SPIR-V storage classes [1239400928a5]
  • alloca values return pointer type of Function storage class [a010bfa06310]
  • functions returning pointers with named storage classes are always inlined [a010bfa06310]
  • added fn... macro to dispatch function calls based on argument types at compile time [df85d72e3fc2] [fef27ebff1a1] [fef27ebff1a1]
  • Scope has only symbol keys since we don't need much more [1b3f96cd2a62]
  • fixed parser assertion on EOF after quote token [308cf4ad0c9e]
  • Added == operator for Closures and Labels [695afc27025a]
  • added dump-frame function to look at the current frame of a closure [9b22d039e6ee]
  • closures to the same label and frame are guaranteed to be reduced to the same pointer [9b22d039e6ee]
  • renamed trunc instruction to itrunc [956827235c1e]
  • added stubs for many GLSL/libc based builtins [956827235c1e]
  • solver supports all transcendental builtins [954ba97eed51]
  • added compile time folding for normalize, length, distance and cross [bc36f3002d63]
  • ? can now also operate on vectors [a854707f143c]
  • using ? with constant single conditional will always be folded [534eb7176a90]
  • added abs, sign, and discard! [f6dbad3044f7] [5ec360c67167]
  • added docstring support for functions [f6dbad3044f7]
  • added _ function that can be used to pass through multiple arguments [aa86a406967e]
  • require-from detects recursions while importing a module and prints an error [aa86a406967e]
  • added stubs for mix, step and smoothstep [96d4c4919a06]
  • added ** (as pow) [a9807b1f94e6]
  • compile-object enables users to export functions to C object files [95d4f316f1c4] [0c1b137a6246]
  • LLVM: ensure static allocas are moved to the entry block of functions [d8ddf9b7d3e4]
  • win32: increased stack size to 8 MB [40fd768c0bc0]
  • initial work on explicit alignments for tuples [b6c6fc7995cf]
  • alignment/size mismatches are not an error [b6c6fc7995cf]
  • more compact alignment error messages [d301fa795040]
  • added SPIR support for GLSL.std.450.Length [cc38167aef4a]
  • list type is now iterable [cf78bf11dbf9]
  • added union type constructor [d5c7477f7c92]
  • added union modifier for struct declarations and test case [eccc3b83fba4]
  • support for forward declaration of structs [1110b9f2b293]
  • added Scope-local@ to search key in local Scope only [1110b9f2b293]
  • added opaque? to test if a typename has no storage type set [1110b9f2b293]
  • better error reporting for when to attempting to finalize an already final typename [1110b9f2b293]
  • struct declarations: only assign supertype / bind to scope if not a forward declaration [3a3026196cd3]
  • added getattr for unions [f9fc18a76ccc]
  • added support for sign [47eebb72352e]
  • added LLVM support for sin and fabs instructions [ead047cb60d9]
  • LLVM: added support for fsign intrinsic [9eb3fdbf5c6f]
  • LLVM: implemented sqrt and length [077f30dd4c0b]
  • LLVM: added support for pow intrinsic [0c403041c775]
  • LLVM: added trunc instruction [842ff069786a]
  • SPIR-V: support for trunc intrinsic [12c8a315b090]
  • SPIR-V: added support for fabs and pow intrinsics [be91796ae5bf]
  • SPIR-V: changed target names and made compiler error message more verbose [603e2219ef0c]
  • SPIR-V: temporarily omit function names until bug in SPIRV-Cross is fixed [b85af397a8d6]
  • SPIR-V: support for floor/step [ddfa212da2ab]

Updated