No Special features in libraries, anything the language can do, a library can do. No primitive types. No operators that only apply to built in and can't be overloaded. Can define literals for custom types.
user literals (can parse)
Constructors have optional names
not just about the language, it is about the package eco-system. Packages are versioned with an extension of semantic versioning but that can be disabled
also no global mutable state
Fix the billion dollar mistake. All references non-null by default with powerful null handling and null coalescing
underlying type and units optional generic
parameters. Example Length
is Length[float64,
m]
. But Length[int, year]
or
Length[yds]
and Length[int, yd]
. Can mix
these types. If multiply Length[yd] * Length[m]
the
result is Length[yd*m]
. Need to do a conversion to
Length[m^2]
.
SQL like query as DSL.
VSON, JSON, YAML, BSON, TOML, structure with different parsers.
no startup overhead, almost immediately executing entry point function
enable serverless, supported by dead code elimination so each entry point gives compact executable.
minimal runtime - GC and green-thread manager. Dead code elimination. Apps can be single executables or for multiple executable can be shipped with static shared libraries.
unsafe is there as an escape hatch but is restricted so that libraries can be trusted to be free from bugs due to unnecessary unsafe code.