-- Leo's gemini proxy

-- Connecting to yujiri.xyz:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; lang=en

yujiri.xyz

Software

What I want in a programming language


written 2023-04-04


Broad strokes


Compiles to native code.


Interpretation is a sin


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.


Type system


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)


Errors


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)


Tooling


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.


Metaprogramming


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