-- Leo's gemini proxy
-- Connecting to yujiri.xyz:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini; lang=en
written 2023-04-04
Compiles to native code.
No garbage collection. I want it to have some sort of compile-time memory management system like Rust, but I'm open to innovation on the specifics, and also could settle for manual memory management if there are tools to make it easier, like Zig.
Essentials:
Generics
Tagged unions or sum types
Static arrays (as in Rust)
Slices (as in Rust)
A static polymorphism system like Rust's traits or Zig's opt-in duck typing
Ideally also, in order of importance:
Closures
A dynamic polymorphism system like Rust's trait objects
Binary operators on custom types (like +, - on 2D coordinates)
Negative indexing (as in Python)
I want errors to work like a combination of Rust and Zig:
I want the `orelse` and `catch` keywords (Zig)
I want it to be easy to use different error types together (Zig)
I want errors to be able to carry information (Rust)
I want to reuse the concept of sum types instead of making optionals and error unions language-level features (Rust)
Easy cross-compiling.
Build modes like Zig.
Documentation generator that allows command-line viewing like Go.
Built-in formatter, or if not, a good third-party one that's popular enough to be considered the standard style of the language. I also want its style to be reasonable, unlike rustfmt. I want me to be in charge of deciding when to break a line.
I want something to overcome the limits of static typing. My favorite solution so far is Zig's, which lets you get information about types with `@typeInfo` and manipulate them with ordinary code executed at compile-time.
-- Response ended
-- Page fetched on Sat Jun 1 22:58:57 2024