New Language Features
-
Generic
#simdtype and intrinsics- Supports array programming semantics (operators)
- New generic intrinsics
- Platform specific intrinsics for the x86 family:
sse,sse2,sse41,sse42,ssse3cmpxchg16b,fxsr,lzcnt,pclmulqdq,popcnt,sha
- PR #1807
-
Merge functionality of
#maybewith standardunionfunctionalityMaybe :: union($T: typeid) {T}No need for#maybeany more
-
Deprecation of
a..brange syntax to prefera..=b
New Compiler Features
-
New intrinsics:
non_temporal_loadnon_temporal_storefused_mul_add
-
Generic
#simdintrinsics:simd_addsimd_subsimd_mulsimd_divsimd_shlsimd_shrsimd_shl_maskedsimd_shr_maskedsimd_add_satsimd_sub_satsimd_andsimd_orsimd_xorsimd_and_notsimd_negsimd_abssimd_minsimd_maxsimd_clampsimd_lanes_eqsimd_lanes_nesimd_lanes_ltsimd_lanes_lesimd_lanes_gtsimd_lanes_gesimd_extractsimd_replacesimd_reduce_add_orderedsimd_reduce_mul_orderedsimd_reduce_minsimd_reduce_maxsimd_reduce_andsimd_reduce_orsimd_reduce_xorsimd_shufflesimd_selectsimd_ceilsimd_floorsimd_truncsimd_nearestsimd_to_bitssimd_lanes_reversesimd_lanes_rotate_leftsimd_lanes_rotate_right
-
Platform specific intrinsics:
x86_cpuidx86_xgetbv
-
@(priority_index=<int>)forforeign import- Force certain things to be linked before others
- Required for the deterministic link order of foreign imports
Compiler Improvements
- Allow
transmuteon constant expressions - Heavily improved support for
js_wasm32target- Basic DOM UI procedures
- Event system including listeners
- Page Allocator
- Compiler flag error message improvements
- Improved ternary-if type inference
- Improved -vet shadowing with ternary-if expressions
- Allow
import _ "foo"to allow for@(init)procedures without producing an import name - Correct
@(require_results)on parapoly procedures
New Packages
core:simdcore:simd/x86core:encoding/endianvendor:ggpovendor:openexr
Package Improvements
- Unify
raw_dataincore:memwithcore:runtime- Make
raw_datareturn[^]Ttypes
- Make
core:imagegeneric interface improvementsimage.which- Generic loader
- Add
#optional_oktodynlib.symbol_address - Add
mem.DEFAULT_PAGE_SIZE - Add
rand.init_as_systemto allow for system-level based random number generation - Numerous minor fixes to
core:packages - Interface cleans up to numerous packages keeping platform specific code private