Language Take Aways
Posted on: 2023-01-17
Language Take Aways
Describe features from languages examined that would be important for a new SIMD/SIMT/general purpose language.
In general
- Support for swizzling and
small vector types
- Support for SIMD/SIMT like abstraction
- Define a heterogenous programming model
- Ownership
- Linear types Austral, and splitting Linear and Free types
- Linear like Hylo
- Affine types Rust - having
dtors
is very convenient especially with containers
- Worth digging into V system a little more
- Make pointers/references the exception not the rule Hylo
- Value simplicity Odin, Zig, Austral
- Have a solid error model that isn't exceptions
- It's probably going to have something like
Option
and Result
zig, V
- Loop breaks Zig, Odin, V
- Context system Odin, JAI
- Also provides "thead safe" globals, binding model
- Prefixing type modifiers, such that can be read left to right Odin, JAI
- Multiple return values and destructuring Odin, V,
- Specifying return value names [Odin](odin.html]
- Making a member transparent Odin, JAI
- Have distinct char types Odin, V
- Module system Odin, Zig, Austral, V
- AOS/SOA ISPC
- Powerful relection/introspection Zig
- Declaration simplification Odin, V, cppfront, JAI
- Bit fields a combination of Zig sized types plus c3 "bit structs" seems appealing
- Simplify/remove precedence Austral, Pony
- Indicating mutability at use site with &
- Having references as something different from pointers
- Concept of "consuming" a variable
- Styles of parameter passing and checking for independence
- Access to low level intrinsics/features
- Use of
@
for builtin intrinsics
- Bit sized built in types
- Bit/non byte sized pointer access, or sentinel terminated
- Makes C compatible types explit
- Compile time "regular" code for generics
- Allows zero sized types
- Simplified declaration syntax
- The
::
and :=
syntax
- Lead with the name
- Named return values
- The
in
syntax
- The
match
with true
and false
- Parameter styles (similar to Hylo)
- Simplified declaration style
- Named return value/s
- First used/last use analysis
- Unified calling style (can call a free function as method potentially)
- Actor system
- Removing precedence for infix
- Expression orientation
- Returning old value from assignment is interesting