| ▲ | archargelod 5 hours ago | |
You can get all of that and more with Nim[0]. Nim is a language that compiles to C. So it is similar in principle to the "safe_c.h". We get power and speed of C, but in a safe and convenient language. > It's finally, but for C Nim has `finally` and `defer` statement that runs code at the end of scope, even if you raise. > memory that automatically cleans itself up Nim has ARC[1]: "ARC is fully deterministic - the compiler automatically injects destructors when it deems that some variable is no longer needed. In this sense, it’s similar to C++ with its destructors (RAII)" > automated reference counting See above > a type-safe, auto-growing vector. Nim has sequences that are dynamically sized, type and bounds safe > zero-cost, non-owning views Nim has openarray, that is also "just a pointer and a length", unfortunately it's usage is limited to parameters. But there is also an experimental view types feature[2] > explicit, type-safe result Nim has `Option[T]`[3] in standard library > self-documenting contracts (requires and ensures) Nim's assert returns message on raise: `assert(foo > 0, "Foo must be positive")` > safe, bounds-checked operations Nim has bounds-checking enabled by default (can be disabled) > The UNLIKELY() macro tells the compiler which branches are cold, adding zero overhead in hot paths. Nim has likely / unlikely template[4] ------------------------------------------------------------ [1] https://nim-lang.org/blog/2020/10/15/introduction-to-arc-orc... [2] https://nim-lang.org/docs/manual_experimental.html#view-type... | ||