Releases
v0.4.0-beta
Features
Compile-time error optimization, displaying filename and line number, type errors show original type identifiers
Runtime error provides stack trace
Multi-line comments /****/
support
Import supports prefix-less import import utils as *
Small test cases parker
Parameter destructuring support, example call(...vec)
Generic type supports recursion type numbert = gen intergert|flotert
Binary operators ||
&&
support
Package management import dir support, will automatically find dir's main.n
Package management import xxx_temp support, can define temp files to interact with static libraries
nature struct adjusted to be isomorphic with C, can directly pass nature struct to C language
Data type arr<T,len>
support, allocated on the stack, isomorphic to C's T ident[len]
New syntax support, nature struct defaults to stack allocation, can get a heap-allocated p through ptr<person> p = new person
Type constraints after as, like var s = {} as {u8}
, declares a set type constrained to {u8}
, equivalent to {u8} s = {}
Package management supports declaring links for static library linking and temps for template declaration
New standard library for strings import strings
To better interact with C, new types cptr
and cptr<T>
added
Added built-in syntax keyword sizeof to calculate type size, usage example int s = sizeof(person)
New standard libraries fmt/os/path/strings/time
New template files (for interacting with C) builtin_temp (default import), dirent_temp, libc_temp, strings_temp, syscall_temp
Adjustments
Type param can only be defined globally
Global variables support type inference
Removed set function, declare an empty set through as constraint
List type definition adjusted to vec, supports declaring vec with original struct and specifying length, example var terms = vec<u8>{len=12,cap=24}
String type adjusted to be isomorphic with vec, supports accessing and assigning through str[0]
, and supports for-in iteration
Vec type method list.len() adjusted to type attribute, list.len, and supports type methods like slice/concat
For loop expression errors and break and continue redeclaration errors
Generic type i = gen int|int64 basic types consistent when repeatedly generated
Register allocation interval_add_range adds range error
set.contains() calculates hash slot error
Defining fn in struct exception
Linker elf rela addend calculation exception, addend = next_inst_offset - current_inst_rel offset
Ssa rename exception, some linear var def not renamed
Ssa calc imm domer exception, recent domer cannot be itself
If multi-line expression parser parsing exception
Automatic GC trigger time exception, adjusted GC trigger point to user mode
malloc allocates repeated memory areas, causing GC exception due to not clearing the area, malloc actively clears the allocated area
Import priority exception, local ident can override import ident
Fixed gcc11 global variable redefinition error #16
Fixed Memory overflow
You can’t perform that action at this time.