Binaries for the Scopes programming language
1d86bbb9dc40 — Leonard Ritter default tip 3 months ago
* added windows binaries for 0.16
57da5ef1574c — Leonard Ritter 3 months ago
* check-in release notes for 0.16
bed7b7768c68 — Leonard Ritter 3 months ago
* checked in linux binary for scopes 0.16

heads

tip
browse log

clone

read-only
https://hg.sr.ht/~duangle/scopes-binaries
read/write
ssh://hg@hg.sr.ht/~duangle/scopes-binaries

#Scopes Release 0.16

#Downloads

#Documentation

Documentation is available online.

#Changes

  • Update macOS documentation to mention Mojave and both LLVM versions [3a7742497710]
  • macOS dlsym() requires symbol names to not have a leading underscore [3f71f9e9c5cc]
  • Update macOS documentation to mention Mojave and both LLVM versions [9b06d3c7f264]
  • added qualifiersof to query qualified type of values [5f025d952ad9]
  • compiler ensures that the argument passed to __drop is a view [17cff061862f]
  • & type constructs immutable reference by default, analog to @ type [929c91751d51]
  • mutable can also be applied to reference types [929c91751d51]
  • fixed free refusing to free opaque pointers [a5f9fe21fe66]
  • Better dylib search mechanics on macOS for the scopes binary [741e6da44bea] [70d114c02efa]
  • fixed a buffer overflow when escaping more than 512 consecutive printable characters in a string [caca3c4981fe]
  • fixed segfault in sc_list_compare when one of the lists is empty and the result is unequal [f1a836d4e237]
  • removed cache for SourceFile so repeatedly opening the same file refreshes content for new access [430da3204013]
  • reduced the global number of open file handles [632b7eab12f9]
  • source files are now treated as unique pointers [632b7eab12f9]
  • anchors no longer keep file handles open [632b7eab12f9]
  • fixed assertion on REPL when an error occurs [471a7caf8d9f]
  • REPL: added sh command which allows to execute shell commands [1098c145fe1f]
  • include: specifying "-c" <path> for options will write an object file to the specified location [2858f372e4f4]
  • REPL: prompt history is saved between sessions [9e0d9bf15685] [9adc7e0e0266]
  • REPL: renamed REPL to console and moved it into its own module, console.sc [9adc7e0e0266]
  • compile-object requires a target triple to be specified [d9f0bfc1cac1]
  • support for generating WebAssembly [d9f0bfc1cac1] [7ae23e7c5afb]
  • fixed issue #25: function abs (sabs) not correct for unsigned types. sabs will now always perform the abs operation, while abs will leave unsigned integers as-is. [58ea46f5597b]
  • compile-object takes additional file kind argument and can now also generate assembly, llvm plaintext and llvm bytecode [7ae23e7c5afb]
  • key-value form of let only binds new names after all expressions have been processed [882a99aaf71e]
  • fixed issue #34: Build (Windows): Remove exact path requirement for MSYS2. the genie script will now attempt to find the folder via the PATH variable. [59510c3f6334]
  • reimplemented defer using view inference [3c5fd789d4ef]
  • argument lists are no longer mutable, and therefore constructed as one [eec8c397e9f5]
  • sc_argument_list_new now takes number of values and value array [eec8c397e9f5]
  • removed sc_argument_list_append [eec8c397e9f5]
  • small adjustment to how argument list templates are folded [c1e8ee6bd379]
  • array and vector type constructor accept any integer constant for size argument [ebedc1a48c95]
  • added 'swap Array [fb4d3c3cac7e]
  • improved error message when a module is missing [0eb9601a0b04]
  • deref moves unique arguments [42d2c01eee48]
  • fixed static-if breaking if the next expression does not start with a symbol [780bbae9eae6]
  • added a is T expression to sugar-match to match a constant value type without unpacking it [fade136cd5aa]
  • removed stack recursion from enum parser [fade136cd5aa]
  • enum sugar now works analog to struct, permitting to define methods in the enum body. tags can be added procedurally at compile time using tag [eb3e10e5385e]
  • enum.__repr combines names for tags using the same indices [eb3e10e5385e]
  • support for using enum as sum type [eb3e10e5385e]
  • removed builtin union type and all instruction support for it [946c11dccfb8]
  • CUnion now uses a storage type that matches the union in size and alignment, and a field descriptor [946c11dccfb8]
  • added sc_const_null to allow creating constant null instances
  • added __dispatch spice to Enum as a way to safely and efficiently unpack contents [2851f9736e78]
  • moved enum sugar to its own module [6390ea67af27]
  • moved struct sugar to its own module [fea133adb1a6]
  • added value constructor for tuples [044b5a7d73ab]
  • added key to set a computed argument key at compile time [e224bfa5c121]
  • added 'unpack-keyed to tuple to allow unpacking tuple arguments with keys [e224bfa5c121]
  • tuple will unpack with keyed arguments if elements have keys [071500c99cbd]
  • enum can be unpacked with dispatch sugar [071500c99cbd]
  • small tweaks to enum syntax, to make tuple definition the default [f1b278041fcc]
  • dispatch will only unpack tuples [f1b278041fcc]
  • using evaluates argument. if argument is a type, and said type exports a scope via '__using attribute, this scope can will be embedded in the local scope [eafef7433f21]
  • enum tags can be imported with using [eafef7433f21]
  • dupe now creates unique copies of views, which makes it both powerful and dangerous [9a2cfdd32864]
  • unique heap references are no longer autofreed [be94799f21d6]
  • C bridge: fixed a duplicate definition error when a struct or union forward declaration was encountered after a definition. [14f63a96a4e6]
  • improved error output for type conversion errors [093149fce4c2]
  • compile-glsl now takes additional GLSL version parameter in first place; if version is set to 0, the most recent default is used [693e892869c4]
  • C bridge: fixed "attempting to use incomplete typename" when binding unnamed structs to multiple names via typedef [d267f657363b]
  • removed new and delete, as heap values are no longer autofreed, so it makes no sense to pretend we have high level primitives to deal with them [66a8e9485455]
  • fixed let not failing when the right hand side contains too many arguments and the left hand side isn't variadic [eae6dc7dd146]
  • test-compiler-error also catches syntax errors now [eae6dc7dd146]
  • naive handling of BlockPointer to avoid errors with MacOS includes [8b05b40e2f2f]
  • core.sc: fixed vector comparison [7d07b4de8df7]
  • core.sc: read vector element accessor using @ [742ed6c653e5]
  • fixed object files generated by sc_compile_object not being able to be linked dynamically [840ad4ec461c]
  • changed code model for objects generated by sc_compile_object to fix library calls crashing on windows [6f44049f0848]
  • method calls can now be hooked via overriding '__methodcall [fb53ae7aecbf]
  • implemented Box as new module; Box allocates and wraps heap pointers uniquely and ensures that they are properly destroyed. It currently only forwards cast operations, getattr and methodcalls. Box.view <value> can be used to get a view to the managed object. [446a419c602b]
  • Box forwards countof and @ operators [05518b5c0827]
  • catch malformed keyed call arguments which accidentally pass more than one value [9a2628b1c20e]
  • implemented both UTF-8 encoder and decoder as UTF-8 module [dcb14c92a5b2] [05d22a6cb662] [3eb3dda8bd3a]
  • added test_utf8 to test suite [727be568bc35]
  • embed inline scopes into caller by default if there's no return label [7382d6f9acc1]
  • added protect to cast a pointer to read-only [74d1b669ed2f]
  • arrays implicitly cast to their (read-only) pointer type, voidstar and pointer [74d1b669ed2f]
  • glm: support for i8, i16, u8, u16 in vec-type constructor [79534cf1234d]
  • symbol comparisons fold at compile time [79534cf1234d]
  • empty? and countof used on list constants folds at compile time [0018fee62b27]
  • unpack can be used on list constants [0018fee62b27]
  • constant initializers for globals will be stored in data segment
  • initializing a typed global with a closure defines a global constructor
  • generated objects use constant initializers and global constructors
  • stages will call global constructors in order of definition [0abb5232ff4a]
  • real literals can be defined without dot and zero if a suffix is provided [c14e070df283]
  • numerical parser now based on custom function rather than strtoll and strtod.
  • 0?.. is no longer parsed as an octal number. Instead, the 0o prefix must be used.
  • FIX: signs not applying to numbers with binary base.
  • 0b, 0o and 0x can be used with floating point numbers. [9956b3ca826a]
  • added global functions integer->string, bin, oct, dec, hex to convert integers to strings [53c2a5cbb282]
  • FIX: fixed typo in as? that made it perform the same as imply? [153f188e5784]
  • added sc_symbol_style to C API [b886448914a7]
  • added type initializers which allows to pass constructor arguments to functions performing implicit casts [539c1fe73c77]
  • initial work on replacing cons cells with symbolic lists [ad971d8c6f66]
  • added sc_value_block_depth to query the block depth of typed values [beb2a2096180]
  • nullof translates to const constructor
  • undef produces pure value instead of instruction
  • move and insertvalue accept constants and undefineds as movable [c0f87e30eef8]
  • simplified undef node [2cd9dd44294c]
  • bitcast is now an instruction node [9a2e4f38b26e]
  • all cast operators have their own value kind now [5d611f5d3151]
  • ? has its own value kind [ebf7dfa6c0bf]
  • Symbols no longer implicitly convert to string [21cdbe406687]
  • extractvalue and insertvalue are instructions [439c53efe6c8]
  • getelementptr is an instruction now.
  • getelementref is directly implemented via bitcast and getelementptr instructions. [614dd7d2fea1]
  • insertelement, extractelement and shufflevector are now instructions [df155240631e]
  • alloca, malloc, free, load and store are now instructions [5c5bd71b2ae2]
  • assign and deref are implemented with store/load instructions [bfc989ea2d7f]
  • icmp and fcmp are now instructions [9f2bd3c73523]
  • all arithmetic operations are split into unop, binop and triop instructions [6982a4d17604]
  • move, view and dupe are no longer instructions [a0c525d3ec61]
  • all image operations are now instructions
  • call instructions now only operate on function pointers [90b59ad7cb2d]
  • typechecker always uses computed instruction type [e4c21796664e]
  • removed template values for repeat, break, raise and return [78d321706868]
  • simplifications in typechecker [fe3fe7c94cff]
  • reduced all cast operations to use a single cast instruction type [e3aa46645de7]
  • added lifetime checking hook to ASTContext::append [a74ae7048992]
  • completely removed existing borrow checking routines and related types [0c0874b45774]
  • initial check-in table interface [f753af7aa1ee]
  • fixed gensyms producing hash collisions [36c23c6b3a09]
  • OrderedMap permits different key type [3f43422317e1]
  • scope objects now allow mapping arbitrary constants, not just symbols. to reflect this, all existing scope API functions now use values as keys
  • removed sc_scope_set_symbol and sc_scope_del_symbol
  • added sc_scope_bind and sc_scope_unbind
  • removed 'set-symbol, 'set-symbols, 'define-symbol and 'define-internal-symbol from Scope objects
  • added 'bind, 'bind-symbols, 'define and 'define-internal to Scope objects
  • fixed symbol constants not getting memoized
  • sc_scope_next and sc_scope_next_deleted iterate by index rather than key [b1fa0fdbcb20]
  • fixed small problem with 'define Scope [dc2e28edd3a0]
  • ensure ptrtoref and reftoptr casts do not generate instructions [bd29af1f88c8]
  • added sinh cosh tanh asinh acosh atanh instruction support for SPIR-V backend [246dd3af635a]
  • implemented atan2 builtin
  • LLVM: implemented all trigonometric functions from C standard library [d43792329fce]
  • GLSL: buffers support readonly, writeonly, coherent and restrict attributes [c37519b6d3b7]
  • implemented atomicrmw instruction for LLVM and SPIR-V backends [2c91137d7933]
  • SPIR-V: added support for calling intrinsics using glsl.std.450.* namespace [adab679d54b7]
  • GLSL: added atomic* functions
  • core: added static type predicate signed? [8580fec568a0]
  • GLSL: simplified atomic function declarations [6cff93ba0a0f]
  • SPIR-V: fixed GLSL namespace, it is now GLSL.std.450.* [55e9ecd92397]
  • implemented cmpxchg instruction for both LLVM and SPIR-V [0059ee2965a3] GLSL: implemented atomicCompSwap [bc0baa33a8b3]
  • GLSL: added findLSB [4936cb4ecb82]
  • SPIR-V: generate OpSelectionMerge instructions for condbr branches [6397c4e06c73]
  • added compute shader related global builtins [233191c63fb1]
  • added __barrier instruction to specify barriers in shaders
  • GLSL: added barrier, memoryBarrier, groupMemoryBarrier, memoryBarrierImage, memoryBarrierBuffer and memoryBarrierShared [4261febe179a]
  • GLSL: added gl_PointSize, gl_ClipDistance and gl_InstanceID
  • SPIR-V: fixed validation errors for switches [864b54286146]
  • SPIR-V: prevent creating types for ptrtoref/reftoptr casts, so we're not building structs for interface block definitions [7fef2535ede5]
  • GLSL: added image sampler formats [4983674d6da1]
  • GLSL: fixed image sampler format names [df95cd045be4]
  • make image samplers non-opaque, because SPIR-V can dereference them [db67f7374836]
  • GLSL: implemented ceil [c54c469866bb]
  • SPIR-V: fixed broken float not-equal compares [2b1c210bd53e]
  • GLSL: added pack/unpack intrinsics
  • GLM vectors and builtin vector type support shift operations [dfe523525377]
  • SPIR-V: always specify extended image formats when an image is defined [3d3406373416]
  • GLSL: added support for shared memory declarators [9552621979a7]
  • GLSL: added layout statements for geometry shaders and vertex/primitive terminators
  • SPIR-V: exporting spirv.OpEndPrimitive and spirv.OpEmitVertex as intrinsic [63cce58625f5]
  • SPIR-V: fixed a problem with intrinsic ops interfering with GLSL intrinsic [24588f474769]
  • glsl: added gl_WorkGroupSize [732bd007a708]
  • GLM: transpose and dot are now inlined [480074c39c0d]
  • SPIR-V: support for flat decorator
  • GLSL: xvars offer support for flat decorator [f8ccf7ad022d]
  • GLSL: added fragment_depth hinting, dFdx, dFdy, fwidth [2098aa672f9d]
  • removed all trailing ! from builtin symbols (set-execution-mode, discard, etc.) [af2018e6eec8]
  • GLSL: added smoothstep [2ff3151f7575]
  • GLSL: added fract [042927b3b073]
  • SPIR-V: removed outdated line [bf6199d99d88]
  • added argumentsof to statically unpack the elements of an arguments type [69e6e4a64d00]
  • glm: vectors have default initializers [48f552fbfc6e]
  • LLVM: fix phi node merges where named structs and unnamed structs clash [c94c0328610e]
  • glsl: added DispatchIndirectCommand and DrawArraysIndirectCommand structs [31aff94c734a]
  • Added syntax for specifying CEnum storage (alternative to plain). [9d7c997f6bb1]
  • merging current tip with my patch [00d1b71ce074]
  • test-compiler-error had been taken off so the test for enums would fail. Fixing. [3cb581694633]
  • Made sure setting non type values as the storage type of the enum raises an error instead of being implied to be i32. [bb97c8f24800]
  • Fixed typo on compiler error test. [3691945525b0]
  • updated credits [05492a71c9b3]
  • core: fixed accidentally baking package.path into require-from [17386fe6cf99]
  • added exponentiation to operator interface, supported by integers and reals
  • ** can now be used as prefix operator
  • pow is now an alias for ** [9dd6e6c9b1b2]
  • fixed ** becoming unavailable for float vectors [f70985cd3c2e]
  • sc_global_new no longer takes location and binding arguments
  • location and binding for globals is set via sc_global_set_location and sc_global_set_binding
  • globals accept SPIR-V descriptor set attribute via sc_global_set_descriptor_set [edc5b7f78780]
  • export math symbols from mingwex.a [fe64617885fa]
  • added scopes logo to repository [f33e9dc99471]
  • fixed: only array references can be cast to generators; avoid creating a local to override this rule [30f82c26488c]
  • tiny typo fix [abebce74b83d]
  • cons and list produce constant lists when all arguments are constant [97aecd322454]
  • unit tags defined in unique enums are no longer predefined globals but must be instantiated [2d48c26d568c]
  • removed stack protection as it wouldn't work anyway in an embedded or threaded context
  • split off environment init part of sc_main into sc_init. after calling sc_init, the entire scopes environment is ready to use. [8beb43b9412e]
  • use default terminal colors instead of custom VGA ANSI codes [67530e55094e]
  • fixed alignment and size mismatch for vector types; alignment and size must both be rounded to next highest power of 2 [88fe3f7d27a4]
  • range will cause generator to deref from on init [81fb26e7199a]
  • API: added sc_packed_tuple_type, allowing to construct 1-byte packed tuple types
  • added 'packed tuple method as well as tuple.packed-type to enable static and dynamic construction of packed tuple types [3c0e24ee345a]
  • struct supports optional packed keyword after subtype qualifiers to indicate a packed tuple storage type
  • packedtupleof constructs a packed tuple [469da889c2c9]
  • added spirv.OpSampledImage to exported SPIR-V intrinsics [9100a5fc0014]
  • added --> expression piping sugar to itertools module [26a8d38551e8]
  • fixed issue #48: Returning Map from a function causes codegen backend failure [24f55582c3a4]
  • added string.collector to build simple string collector sinks [a908da961ab6]
  • added 'range method for strings to iterate substrings [dc1476ec1a42]
  • itertools: added join to support joining two or more generators that return the same value type [f71474d90657]
  • typo fix [62e20f008235]
  • added 'lineage method for scopes to iterate all inherited scopes [a35cbcf8a50a]
  • fixed issue #49: backend failure when storing maps into structs [92e37a2f13ab]
  • fixed Map raising the MapError factory instead of instantiating a value [0103fe033c48]
  • added new do block type for switch blocks, which allows to collect all fallthrough switches with pass exclusively, rather than having to ensure that the last statement uses case.
  • a pass block must not be followed by case blocks, but can only be followed by pass, do or default blocks.
  • a do block must follow one or multiple pass blocks. [0cb40a1ecbf2]
  • returning local references automatically dereferences the argument before return [91b164d0b3df]
  • implemented 'offsetof method for types as well as static operator offsetof which, when passed composite type/value and integer index or symbol, returns the byte offset of the element or field. [7b545c2fbd7b]
  • updated codebase for clang/llvm 9.0.0 [72953df8fb2c]
  • added missing clang lib include to other platforms [8a5de16cb89a]
  • updated docs to reference clang 9.0 [fa5be198ea95]
  • added bitwise and arithmetic negation support for C enum values [da202b7fff80]
  • Fixed #19 and added ability to multiply non symmetric matrices as long as it makes sense mathematically. [e0507b57d877]
  • added more tests for asymetric matrices [c7f5c2115205]
  • enum: fixed union payload type having padding ignored by load/store which corrupts the payload. [af53b1829f9c]
  • union storage: fixed crash when none of the members could beat the alignment [1d845fa9dddb]
  • union storage: always use vector member to fix alignment [04e7b65bf19b]
  • improved C ABI compliance for float based union storage types [3961e5c4cee0]
  • fixed segfault when trying to exist non-existing struct fields [b01f37dade68]
  • improved error message for attempting to explicitly retrieve a missing symbol from a scope [d8a2dbc20664]
  • types and scopes no longer support dynamic key lookup for getattr, guaranteeing that getattr will always succeed at runtime [01fbb4174c8b]
  • accessing a non-existing tuple field gives alternative suggestions
  • sc_type_field_index throws an error when the field does not exist [b20b8f2f5f2f]
  • added support for accessing fields inside unnamed C structs and unions [6f5a3b468eb5]
  • added error when defining the same enum field multiple times [abea7a95eb9c]
  • enum: improved error message for duplicated field definition. [380ae5fbda0c]
  • enum: refactored duplicated field checking to a single function and added type name to error message to make it easier to find the mistake. [3b596fa45473]
  • Error on duplicate tag [6a70bce96e26]
  • API: sc_scope_at, sc_scope_local_at raise error if key is not a constant [907982548137]
  • Scope objects have been rewritten to become immutable mappings, which means that mutating a scope always creates a new one.
  • 'bind Scope no longer operates in-place but returns a new Scope object. The same goes for bind-symbols.
  • Scope constructor only accepts optional parent argument. Reparentng can be done using 'reparent Scope or 'unparent Scope
  • added indirect-let form to allow setting hidden predefined symbols.
  • module docstrings can now be queried with 'module-docstring Scope. [8d4bc7342fc8]
  • added chain-typed-symbol-handler which allows to register a compile type symbol handler. see test for usage example.
  • and and or always forward variadic arguments whole [e840143d6ff0]
  • added ipair to itertools allowing to pair arguments from generators [10a79f4bda62]
  • itertools: not passing a second argument to ipairs assumes N == 2
  • error traceback anchors now correctly point to defined functions where referenced [b169928754a7]
  • core: fixed modules being imported recursively not being cached properly [9783c84de7de]
  • speed-up scope lookup when a map is available
  • reparenting no longer reconstructs all entries [effac45da4fa]
  • console: fixed using import not importing anything [1b8a4fff908c]
  • updated test-dots.sc [00c07df12900]
  • added static type modifiers uniqueof and viewof to allow building function signatures that use unique types [684f8e47edf5]
  • fixed mutable applied to referenced incomplete typenames resulting in a read-protected reference [e04e6f6bb49c]
  • fixed: reference types are checked for flags and storage class compatibility
  • API: added sc_type_compatible to check compatible pointer and reference types [1ad765925f2f]
  • struct constructor stack traces use declaration anchors [428003e12260]
  • added swap to core which allows to safely exchange the contents of two references [1e764ea78eb6]
  • better error annotation for va-map and getattr on structs [7b851bdc7a01]
  • sc_string_match returns indices of found substring in addition to boolean indicating success [dd5b43c29fa6]
  • fixed regexp test [89abaf93ea72]
  • fixed script-launch-args function generated for main module [0c9032e918a0]
  • implemented issue #54: support for typeof qualifier in imported C declarations [3948a1b84061]
  • improved anchors for error messages
  • modules are compiled at optimization level O2 on import
  • Array: support for resizing arrays [ce823497be87]
  • removed -O2 flag for exec-module because it breaks tests [6b53d6a5cc6a]
  • fixed broken implementation of @ for vector [fe468d5048ae]
  • integer types can be constructed with integer [ca0d31e09681]
  • platform ABI: support big integers [a48fe659a33c]
  • don't perform constant conversions when the target type is greater than 64 bits [f2b52b97e68b]
  • initial support for f80 and f128 floating point types [9b2ed63b367f]
  • added ordered comparisons for CEnum [2d66a1b4c617]
  • fixed = operator to not attempt to cast the left hand side [ef0a4b65d095]
  • improved iching example program [68255e07dcb5]
  • fixed size and alignment for large and non-pow2 integers [eceae981a846]
  • console: read-eval-print-loop takes a global scope as argument [815e62d1f610]
  • added rrange for reverse iteration of ranges [5eb96b92da95]
  • compile-glsl and compile-spirv use different target environments.
  • both SPIR-V and GL fragment shaders use ExecutionModeOriginUpperLeft [4c0638865cd5]
  • console: read-eval-print-loop hides logo by default [0ea2905ce6c7]
  • support specifying a custom history file for the REPL [c0dc4399fb20]
  • enum module exports Option constructor which allows to store null references [13612bed5091]
  • fixed reftoptr and ptrtoref stripping view qualifiers from viewed plain types
  • implemented __drop for enums [fe4350211702]
  • removed struct constructor behavior that auto-converted references to pointers if the target was a pointer [cf4e1b292daf]
  • plain union constructors now accept a keyed argument as constructor and return a new local [8ed509035175]
  • Added glsl builtins specific to the vulkan extension [9db1bb5a7680]
  • enum: Option can be implicitly converted to bool and passed to conditionals directly.
  • enum: Option allows safely popping the value to a function for safe deconstruction. [49e409aa2988]
  • enum: implemented 'swap method for Option which allows to drop the previous value on a mutable before supplying the next one [7b8d1fc1e0e6]
  • initial support for big integer constants
  • added sc_const_int_words_new to create integer constants larger than 64 bits
  • spice-quote correctly quotes big integer constants [972af3794e9f]
  • analog to fn and inline, fn... and inline... no longer bind the function name locally, but make it available under this-function [883707f5185d]
  • added support for unpacking big integers [1241f27d71cd]
  • enum: changed 'swap Option for a simple swap-out [c059d5da17ec]
  • removed char from core
  • UTF-8: added char operator that converts string constants to 32-bit unicode values [ac5bd84fb9c8]
  • fixed console for removal of char [8167456726e1]
  • glm: added gvec2, gvec3 and gvec4 supertypes [114a011fa541]
  • sc_import_c and include return C symbols sorted into individual subscopes struct, union, enum, define, const, typedef, extern
  • include no longer accepts code blocks in next line; instead, the macro discerns between include file and code block by presence of a newline character at the end
  • include: removed import modifier; instead, include always returns a constant scope object
  • include: removed filter modifier, as symbols can no longer be imported into the local scope [9aa3d537c621]
  • clang bridge: structs, unions and enums type names are prefixed the way they would be in C [da2053d66983]
  • sc_import_c allows specifying a scope with which to replace types
  • include supports new using option which allows to specify a scope to replace types [b72d2efd5f36]
  • performance improvement: when scope lookup requires more than 16 iterations, create a table at the nearest endpoint and try again [1342cae95f1f]
  • clang bridge: last commit broke alias defines, fixed [59c8b49300e6]
  • ABI: fixed byval attributes missing from parameters and call attributes [c062be65cfa1]
  • small typo fix [01dddabab477]
  • LLVM: redeclaration of an extern with the same name resolves to the same global, provided the backend type matches. If types don't match, an error is generated. The type mismatch can perhaps be fixed by using a const bitcast, but I'd have to see a real world example first to test this. [ff8e2a897a06]
  • fixed module docstring propagation across run-stage, using and scope inheritance
  • updated module documentation
  • updated reference documentation [939ebdc7231f]
  • console: fixed autocomplete scope not being updated [1fca6dd40734]
  • updated C++ Users section in docs, and added new paragraphs for operator overloading, standard library, memory handling and closures. [03ce2e27e1d9]
  • completed the remaining open chapters of the C++ user guide [4e6ccc2c5be0]
  • fixed a symbol missing from itertools
  • small fix in the docs
  • include: using allows passing any expandable expression, but expects it to resolve as a scope [ce189c5d606e]
  • using allows specifying a sugar time expression for filter [463a4a2b2a61]
  • C/C++ user guide: added typeinit mention to initializer lists section [94d247b82e8e]
  • clang bridge: if an enum is unnamed and a typedef name is available, use it for the enum's typename string [0c2ef10d7850]
  • added GlobalString value type and sc_globalstring_new API function
  • imply and as attempt to cast the qualified type if the stripped type doesn't work [1f178fef0546]
  • global strings do end in a null byte, but the array type's size now only covers the number of characters
  • two externs using the same symbol with a different signature can be used in the same module [a9979cd28895]
  • changed sc_global_string_new to take a buffer and size instead of a string object
  • added sc_global_string_from_cstr [ea13c504b049]
  • removed string class
  • added new GlobalString class which encapsulates global strings compiled with modules [197bb857f4a7]
  • fixed implementation for sc_default_styler [a5db293d3a10]
  • small improvement to print function [61936071ae3a]
  • fixed broken constructor of Set [8f589f2c5a0c]
  • fixed more issues with dropping owned values in Map [59f0229b4a12]
  • fixed ordering error when auto-dropping uniques [1f80454f7cb1]
  • vectorof constructs constant vector when all converted arguments are constant [3d13f52fe1d2]
  • Map and Set both evaluate to true if they're not empty [b21a7c2c8be3]
  • SPIR-V: add the right capabilities for some of the more popular builtins [51985606f440]
  • enum: enum type fields are no longer bound to constructors directly, but to their type descriptors, which provide the constructor. Usage doesn't change, but field attributes can now directly be queried. See test. [a00f3787fcda]
  • fixed builder generating code with a too high version number [15741a4b110d]
  • SPIRV: compiling spirv directly uses latest version number [c4fb8c54de11]
  • try/except has been expanded by a try/else form, where any kind of exception is caught and the raise type can be polymorphic (as it is being ignored) [a316b318b9ce]
  • added for ... in/else form to allow users to provide a fallback break value [69f4d53ff388]
  • fixed repeat in fold ... for ... in so that the loop can be skipped provided the current state [ce4eead16343]
  • tuple supports unordered comparisons [fbe0c1380d95]
  • expanded the error message for try when an except or else block is missing [5696d5daf330]
  • Option now handles pointers, is None if pointer is null. [21294446b4b3]
  • changed Option typecall to use same mechanism as __imply if there's a value, and wrote tests [fb2fabb4d669]
  • made Option constructor more terse [a5226dbd7659]
  • added unwrap method to option, refactored payload extracting from enum [e44428704bfe]
  • fixed UnwrapError to have (storageof Nothing) [6a76372919fd]
  • unwrap method for Option [6fb8107992c1]
  • support for accessors: getattr will defer a lookup when an attribute is a type of supertype Accessor, calling the type with the value and key to be looked up.
  • added property module and test, allowing to define python or java style properties for arbitrary types [190b1de9ad7c]
  • changed accessor protocol so that accessors are closures, like generators, and getattr forwards calls directly to the closure [b2755ef4f05a]
  • added unordered comparison support for arrays [14262613949f]
  • overloading: fn.../inline... will query an argument type's __typematch method if available and the argument doesn't match directly, enabling users to write types that perform pattern matching and conversion only [5ee6b9a44760]
  • overloading: if pattern matching type is a reference, the argument must also be of reference type [a77a936c1662]
  • unsized arrays can be used as pattern matcher for overloaded functions [3d9862901e40]
  • initial implementation for C socket API wrapper and test code [c18f4a1a085f]
  • removed temporary comments [9ac45d4fb454]
  • UTF-8: encoder forwards individual characters rather than chunks
  • UTF-8: updated test [eb2a0246d5b4]
  • tupleof and arrayof return constants when all arguments are constant [24f5edeac94f]
  • instantiating structs with CStruct supertype with all-constant initializers will produce a constant [2ebf65df42a1]
  • fn...: added support for inlining the first case into the declaration [7fe0a6abd575]
  • updated globalstrings to trunk state [7f328d79781d]
  • Symbol constructor returns constant if argument is also constant [35802be5d4bd]
  • global is initialized with pure value only once, allowing to use global to implement persistent variables in functions [203f0282a169]
  • expanded globals test a little [09cdfcd0f6d9]
  • globals declared without initializer will be constructed once if all type constructor arguments are pure [d3d3f3cdadf2]
  • LLVM: fix returning named structs that have been cast from tuples [f9d5c6138ed2]
  • moved Option type to its own module, Option
  • Option: 'unwrap now merely asserts that the value is available; try-unwrap raises an UnwrapError [f2fc3086f841]
  • fixed messed up merge from default branch [1f3e0c23c3f8]
  • fixed another broken merge [dc1d62c1a99c]
  • implemented RC, a reference counted Box [1b9c66527b31]
  • changed Option typename [3c10770d5a95]
  • Option: perform correct coercion when implicitly converting values to options [a92b6ae9cc74]
  • LLVM: fixed passing named structs by argument causing code generation error [541e822dd3fb]
  • Array: added 'pop method to allow removing last element [72dd75ff7237]
  • Array: implemented 'last method to view the last element of an array [909b615c03df]
  • renamed RC module and type to Rc [5c3a3f8fc3e6]
  • always bind repeat and break builtins for loop bodies [13cda9c3a915]
  • Rc: changed storage type so that payload type can be incomplete at the time of declaration [4ead13458680]
  • Rc: added support for weak references using Weak; weak references can be upgraded to strong references using Rc, and Rc can be implicitly converted to weak references [d31f9cdf385b]
  • Rc: drop function hints returning void so it can be used recursively [dc2c7c95874b]
  • Array: added 'reverse method, returning a generator that iterates the array in reverse [1696e97a1b04]
  • Array: added remove function to remove a value at a given index [a8c4e0eb859d]
  • Rc: fixed a condition where deleting a strong reference would delete a weak one which would take it upon itself to delete the refcounter storage as the strong reference had already set its refcount to zero [d183bb5c9070]
  • fixed mutarray test [b5dbf51ec383]
  • Array: added 'insert method which allows to insert a value at a specific index [1e4a06557bee]
  • rc: added equality test [800945a5342a]
  • Array: support for passing extra parameters to 'sort which are forwarded to the key function [6c0d07c3b6c8]
  • Rc: added singleton test [5514201b9c49]
  • merged default branch [22e6b7277aa4]
  • fixed rrange overshooting when from is zero and the counter is unsigned [04d97f1df4cb]
  • alloca, malloc, alloca-array and malloc-array propagate view qualifier to generated types
  • Enum, Option: fixed payload extraction not propagating view attributes correctly [3fbc15daa33c]
  • Rc: ensure Rc.clone properly dereferences source pointers when duping [87c87fcbd7e3]
  • Rc: fixed assignment error when assigning strong references directly [74118464ab51]
  • Option: renamed 'unwrap to 'force-unwrap and 'try-unwrap to 'unwrap
  • Rc: 'upgrade no longer returns an option but raises an UpgradeError
  • Rc: 'force-upgrade causes a runtime assertion when it fails [94b3cfa730c3]
  • Rc: Weak can be instantiated as an empty weak reference
  • Rc: 'clone method (aliased through Rc.clone) for Weak can be used to duplicate weak references
  • Rc: added equality test for weak references [5231803703c2]
  • LLVM: fix wrong file being displayed in debugger by switching lexical block [ebf8ff0ee026]
  • Rc: fixed an issue where 'upgrade Weak would omit a dereference [cdd618c6c32a]
  • win32: fixed linker error because of missing symbol [62b9e91cccaa]
  • small fix to test_rc.sc [c1721f510e7d]
  • fixed testing/makemain.sc [30583020c347]
  • implemented String class [7065ad65ee79]
  • implemented String type [6d92e54d4c3b]
  • fixed test_all [779df13a6702]
  • fixed compiler warning messages [27be6d52d7ef]
  • added str supertype and sc_str_type constructor [f7cdbbcf24f0]
  • type of global strings is now subtype of str [ebe78003d69e]
  • more work on tests [b97c36393687]
  • moved --> operator from itertools to chaining module
  • itertools: added permutate-range generator [dbd87b15f4ac]
  • implemented == for Nothing and Enum [b824fb9781d7]
  • Enum: small simplifications, improved test [bd9db49a2676]
  • removed getattr access error from traceback [e5988671a87c]
  • Map: singled out Set class into its own Set module [6360efa21342]
  • added hashing support for Nothing, Rc and Enum [38ad42cf817d]
  • Map, Set: added support for specifying custom hash function [545c53b5df36]
  • fixed swap accidentally moving arguments
  • Set: insert returns a reference to the inserted key
  • fixed Set operations for unique values [c32d5879c264]
  • smaller fix to Set [378c540e2414]
  • API: added sc_anchor_new [48e8e75079bd]
  • enum: only set special methods when there are no user defined versions [d98d3522ad44]
  • enum: added 'apply method that allows to call an inline for all payload branches [7b89feb102f2]
  • enum: method 'apply does not call function argument for default branch [70a858c1451f]
  • Set: fixed 'insert returning the wrong index if a value was newly inserted [ee25fa596ddb]
  • fixed unsized array and vector types generating huge types [21ea62c3b423]
  • enum: fixed apply returning no values
  • Map: fix for inserting unique values [d59d4a47a73a]
  • Map: more fixes for unique value types [314852df2e0e]
  • fixed broken typematch for unsized arrays after recent fix
  • API: added sc_type_is_unsized function, allowing to query if a type is unsized, as element-count will now always return 0 for unsized types
  • added 'unsized? method for type
  • added unsized? static operator to check for an unsized type at compile time [14806e5edfd3]
  • property: fixed certain implicit conversions failing [400e714131b4]
  • from: improved debug info
  • types can alter type attribute access using __typeattr [f677df768442]
  • added methodsof accessor binder that can be used in conjunction with from
  • updated test_from [12f622ed0743]
  • improved debug messages [5e909ca8bb4c]
  • improved debug messages [b2724dfa0e03]
  • methodsof uses methodcall rather than attempting to pull attributes directly [9374670b9fe7]
  • Rc: fixed returned refcounts to no longer be views
  • Capture: fixed captures not working when captured arguments are non-plain [4b8e07ff9abc]
  • added unpack support for properties [03f4de1f8099]
  • moved dispatch form from enum to core [21ced7098fec]
  • clang: fixed translation of unsized array types [7a5d3697eeaa]
  • locals no longer splits up scopes when a dynamic symbol is in the scope [9a5476946a3c]
  • improved error messages [be1a93cdfb66]
  • property: methodcall and toptr/toref operator support
  • static enum values implicitly convert to safe integer values
  • Rc: none can be converted to an empty weak reference [27ffe3f7d8ee]
  • prover supports registering a handler for type coercion, for which core provides a default handler
  • switch cases are coerced to the type of the switch argument
  • if uses the new mechanism to coerce conditional arguments to boolean type in favor of the __tobool method [f43f124656a6]
  • renamed libc namespace to C [8430933436d9]
  • Enum: allow comparing enums to field definitions [f543219644eb]
  • icmp and fcmp instructions no longer propagate view status to exit argument [39e5743d6b70]
  • struct: non-constant field initializers turn into autogenerated constructor calls [283bb360720b]
  • small change to struct code [12432843a515]
  • glm: support for using 0 and 1 literals in vector element accessors [ecb3ceda547c]
  • enumerate allows specifying a type for the enumerator [974a84124515]
  • array type constructor supports multi-dimensional definition [0f394de291f7]
  • fixed bitcast allowing casts between types of unequal size
  • fixed bitcast not allowing casts from vector to integer [61d3bc2ed380]
  • extended alignment test [9fdc358bd999]
  • new native matrix storage type to represent matrices in SPIR-V
  • glm: use native matrix storage type for mat-type instances [0c144b406ec3]
  • fixed missing support for matrix storage type in platform ABI [8f5e9d7f28e1]
  • small comment addition to clang test to demo how to output object files [726dcbe5cd10]
  • removed surprising behavior from tuple constructor [7eb0f3bae249]
  • pointers can be explicitly cast to intptr and back [e9301a71768d]
  • glm: if all vector construction arguments are constant, the vector will be constant [e303619374ab]
  • glm: matrix constructor now returns constants when all arguments are constant
  • extractvalue, insertvalue, extractelement and insertelement return constants when all arguments are constant [7205074644b3]
  • implemented distance in core [8c3b7d24bbcf]
  • implemented mod operator to perform euclidean division [de4ed1e0c150]
  • upgraded mod to perform floor division as well [ac49a36a693a]
  • fixed dot notation accidentally matching infix notation [e99ac8ce1ce7]
  • fixed inplace operators failing on properties [6da5b02a8e28]
  • added support for hashing integers more than 64-bit wide [5d8c4e0e52bd]
  • Re: [PATCH] added support for hashing integers more than 64-bit wide [832bacacb188]
  • fixed mismatched swizzle constants for vector sizes < 4 [3de9fe8684b9]
  • SPIR-V: fixed wrong decorations for matrix types in structs [cea8d9653b77]
  • SPIR-V: fixed test_spirv_loop and structured selection errors in validator [e2b11990aa7c]
  • SPIR-V: fixed unstructured branch validation error for if/elseif/else construct
  • retired value-kind-if node in favor of value-kind-cond-template
  • removed sc_if_* API functions
  • added sc_cond_new API function [eeadb6082f44]
  • Capture: fixed invalid implicit conversion of template not producing a cast error [390d9380c323]
  • glsl: locations, bindings and sets for uniforms, buffers and varying parameters can be of a type that implicitly casts to i32 [f5c965515f4e]
  • Rc: call operator is forwarded correctly
  • glsl: initial work on separate sampler types [ce355331ca22]
  • small adjustments to test [2ae006e26c24]
  • added sc_spirv_to_glsl API function for debugging spirv shaders / spirv cross [6f867dd7d7d6]
  • Set: fixed discarding being broken when the element type is unique
  • Set: added pop function [da073d23ab09]
  • repr no longer attaches type signature to string when __repr is defined [9e99eda60a19]
  • types can now be constructed with type in addition to typedef, with the exact same syntax. analogously, type+ has been added as a synonym to typedef+ [daae3023f29b]
  • tupleof constructs a viewed tuple when some arguments are views
  • Capture: proper handling of all-unique and some-view capture arguments
  • Capture: ensure captured values are dropped when capture is dropped [73dd0e0c0b0c]
  • fixed borrowing test for a case that now works [4eb7943d34c8]
  • small cleanup [e2d63fbdac1d]
  • capture: made interior a function [98af3a1739ca]
  • core: implemented copy protocol; most basic plain types are copyable by default; types that implement __copy can be duplicated using the copy protocol.
  • Rc: retired Weak.clone and Rc.clone in favor of copy protocol [862ad025febb]
  • implemented bitreverse, ctpop, ctlz and cttz instructions for CPU and GPU [59c6d9fe1a6c]
  • renamed ctpop to bitcount and removed ctlz and cttz
  • added findmsb and findlsb which work analog to their GPU counterparts [6488874570c0]
  • LLVM: fixed result for findlsb when value is zero [230512bb1d9e]
  • added missing include [2b2d04f18414] fixed bug in >64-bit hash, added tests [41df7cf9a167]
  • implemented typematch syntax to allow constructing type matchers in overloaded function arguments [5d9bb751c2b6]
  • implemented new protocol for in infix operator, which allows to check for the presence of an element within a value of aggregate type
  • tuple, Map and Set support in operator [25888d6027bf]
  • fixed logo image link [8ed61c65a058]
  • not autowraps arguments in a list when mulitple arguments are passed [bad8806132f9]
  • not now allows specifying more than one argument, which will treat all arguments in a new expression [4656e5df784e]
  • removed defunct icon theme from vscode package [52f12b75f1dd]
  • va@ supports selecting arguments by key rather than index [a2de646dd889]
  • added hashing support for tuples [ce93f1c3c991]
  • removed unexpected assertion [31dc00a82239]
  • REPL: locals defined in console scope are automatically converted to globals and remain mutable [913fe7719c61]
  • REPL: fixed problems when globalizing unique locals [27d1f25bb95a]
  • default copy operator now also dereferences the value [d4447cdd5a51]
  • ABI: fixed returning multiple values of reference type; this rarely triggers before we auto-dereference stack references. [14c0c4fbd1b8]
  • structs and arrays report the right size when elements are references [f19c88bc0508]
  • type reprs now largely reflect valid constructor calls so users know how to construct the type
  • signed integer <width> or signed <integer-type> can be used to construct / convert integer types
  • _: is a valid alias for Arguments
  • raises can be used as an infix operator [b0b66ba9cded]
  • added <-: operator for nicer function construction [70b847a649b8]
  • vscode: syntax fixes
  • added one more try test [ea390988632b]
  • added copy support for Error object [2ffd39e9a161]
  • updated LLVM/clang dependency to 10.0.0 [3187bff41ab4]
  • updated links in docs [4cd20735cb31]
  • added mingw polly dependency to docs [84bc7ba5e121]
  • win32: changed compiler version to gnu++14
  • win32: polly is not linked [217f6a99ad01]
  • make sure LLVM includedir is used on every platform [39ae7013220b]
  • fixed using viewing on plain values [6a37f4a6be82]
  • renamed sc_prompt_* API functions
  • removed sc_set_autocomplete_scope
  • prefixed all prompt relevant API functions with sc_prompt_*
  • added support for prompt autocompletion callback
  • console: use autocompletion callback to implement scope completion [ede14d36bccb]
  • REPL: console now autocompletes after dots if the left hand resolves to a valid scope or type [98cf845071fc]
  • REPL: completion suggestions are first sorted by length, then lexicographic [7fccfb5a02ee]
  • prover.cpp: loop merge conflict error now points to loop header as source. Previously the error message was anchored to the return type that precedes the conflicting one. This makes sense for functions where the return type is inferred by the return points, but not for loops where we always know the type (from the header). [da1f575431d7]
  • sc_value_unwrap: don't cause an assertion when the target type is opaque [effc79a613da]
  • parser: implemented support for user string prefixes [ba993c3ad05f]
  • changed string prefix symbols from str: to prefix: [85f246ab9c44]
  • for prefixed strings, only " can be escaped, all other characters are taken as-is. [db870a62221a]
  • Wording and formatting changes for Scopes' dataformat documentation. [08c7522abc6b]
  • wording changes in about [69e792e3850f]
  • wording changes and additional material in cpp_users [69e792e3850f]
  • wording changes, additional material, and fixes in tutorial [69e792e3850f]
  • aux file check-in [b994af707d35]
  • Add LLVM debugging for parameters and locals
  • Locals are not working yet, because they don't have names. [72decfd4ac22]
  • merged branch [bcda89cbb3fc]
  • small clean ups [646d9ae5bd23]
  • updated credits [2ad5ce50a21c]
  • initial check-in of String module [dca56f71b439]
  • quote: lose unique objects when quoted [45d2a01e8ac9]
  • fixed update_docs script and regenerated reference [9f43f844af69]
  • added find-module-path to core [43b91c76cef7]
  • allow explicit casting of pointers to other types, preserving storage class [01d04a93ddfb]
  • prepare docs for MkDocs conversion [02cdcabe9b7e]
  • initial conversion of docs from restructured text to markdown [093a29cdd014]
  • convert Array.sc to unix format (line endings) [ea7b7d7be5b5]
  • fix doc generation for functions decorated with @@ spice-quote [dfd277ec3bd6]
  • fix syntax highlighting
  • disable highlightjs in favor of codehilite / pygments
  • add pygments css
  • convert scopeslexer into pygments pip-compatible module
  • update scopeslexer to python3 [8a1adb612d90]