You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
maybe types are built-in optional types. The syntax for such a type is: maybe i32, similar to futures
Updated pointer syntax to pave way for data ownership. Currently, 4 types of ownership are supported.
Parent function/type ownership #[u64]
Explicit parent type ownership #[u64 'type] & Explicit type ownership #[u64 'type(SomeTy)]
Heap ownership #[u64 'heap]
Anonymous ownership #[u64?]
Pointers with anonymous ownership are not created like that. The ownership is just understood as anonymous in a context different to that of the owner, if there is no explicit ownership specified, or if there is no explicit ownership that can be specified
The filesystem based library system has been updated. Previously, if there was a file called lib.qat in a folder, that folder was understood as a library. Now, the name of the library has to be prepended to the file, so now as an example, it would be something like this: std.lib.qat
There are also additional checks to see if the name of the library is a keyword or not. If it is, errors are thrown
bring'member has been added to make another file/folder a child of the current module
Added meta'moduleInfo to provide metadata about the current module in scope. This can be used to add data like external dependencies, library name, output name, author and much more
Added --static & --shared switches to the CLI configuration
give/returns can now have void expressions. Previously the compiler complained if the return type of the function was void, but an expression was provided in the give. Now, it does not throw error if the expression itself is of void type (mostly for function calls)
Basic support for global declarations. The syntax is identical to that of the local initialiser, however, globals doesn't have the type inference and optimisations you get in local declarations as of now.
Intialiser expressions for global declarations are now emitted inside the module initialiser function and there is a check to see if the expression is a constant or not. If all initialiser expressions for all globals are constants, then the initialiser function for that module will not be called.
Updated string slice creation syntax. Previously, it was str from (buffer, length). Now it is str{buffer, length} which I think is the better one
Removed temporary path parameter in the CLI config. Added --target and --sysroot parameters, mostly part of a successful attempt to achieve WASI compilation. However, --target has lots of uses on its own. Mostly cross compilation. Added --release switch that changes the compiler mode to release, which as of now is mostly useful in say'dbg
Added say'only which doesn't append a newline to the output
Now, if one of the copy assignment operator or copy constructor is defined, the other is also required. Similarly, if one of move assignment operator or move constructor is defined, the other is also required.
let keyword has been replaced by new and now the type for local declaration is specified after the name of the local
Syntax for core type member fields have been changed so that type comes after name. Now the syntax is fieldName :: u64.
say'dbg has been added that only prints the output if the program was compiled in debug mode