Eko: New Programming language write entirely in D (Feedback welcome)

pouya1dev poyaxc545 at gmail.com
Sat Aug 22 11:32:04 UTC 2026


On Saturday, 22 August 2026 at 11:10:36 UTC, Danol wrote:
> Okay, did a brief look on the language - I am sorry, but I 
> don't have energy to do something deeper, I'm drained enough 
> from doing code reviews in my job :D
>
> First, it's hard for me to make an opinion on the language, 
> because the examples are rather limited.
>
> But from what I've seen, I've generated a feedback below. 
> Please keep in mind that even at my job, I am labeled as "the 
> mean one", so don't feel discouraged by my words. Trying to 
> write a custom programming language is something every 
> programmer should go through, and it's a wonderful journey.
>
> 1. `write("Hello" + "\s0" + "World\n");` Here you're 
> concatenating strings, but I haven't seen any explanation what 
> that does under the hood. Is the language GCd? Are the strings 
> dynamically allocated?
> 1. "s0 is a escape for space" why? I don't think I've seen this 
> syntax in any language. And why do we even need to escape a 
> space?
> 1. I am very confused about the code block/scope syntax. On one 
> hand, I can see standard C++ `{}` at the function level, on 
> other hand, I see Python-like `if :` on the conditions level, 
> but then I also see `end;` followed by `else` that is not 
> followed by `end` (what are the rules here?). That feels quite 
> inconsistent - pick one scoping system and use it everywhere.
> 1. (minor) You're also inconsistent in the naming standards. 
> For functions, I've seen camelCase `main` and `getInput`, 
> PascalCase `Printer`, plus I think I saw you requiring 
> underscores somewhere as well on the beginning of the function.
> 1. You're using `strcmp` function in your examples, which is 
> one of the most C things ever :D For new languages, I would 
> recommend avoiding it - it returns 0 if the strings equal, 
> which is something one can easily forget and make a mistake in.
> 1. The `-v:` prefix for variables... In my programming 
> experience, I actually prefer to not to have to care whether 
> something is a variable or a function. It has often happened to 
> me that I needed to turn some variable into a function at some 
> point during development - at that point, having to rewrite 
> every usage of such symbol to make it compile again is tedious, 
> generates diffs, and is grounds for merge confilicts and such. 
> In this regard, I find the D's UFCS very neat for example - you 
> just turn the variable into a function, and the rest of the 
> code just keeps working without a hitch. The "-v:" prefix goes 
> against that, plus the combination of letters you've picked is 
> rather finger-bending to type.
> 1. Also I've randomly opened a file: 
> https://github.com/ekolang/eko/blob/main/src/source/app.d From 
> what I've seen there, I'd recommend you utilizing libraries 
> more for the "standard" things - parsing arguments is something 
> that is plenty standardized and has libraries in basically 
> every programming language, for example 
> https://code.dlang.org/packages/argparse

Thank you very much for taking the time to look through Eko, 
especially when you're already drained from code reviews at work 
:D

Honestly, this is exactly the kind of feedback I was hoping for. 
Some of the things you pointed out, especially the inconsistency 
in the scoping syntax, string semantics, and the "-v:" prefix, 
are things I definitely need to think about more carefully.

Some of these decisions came from the very early stages of Eko, 
and I can already see that a few of them may not be good 
long-term design choices. I also agree that I should make the 
language's rules more consistent and better documented.

I'll go through your points one by one and think about them 
before making any changes. I really appreciate you being direct 
about the problems instead of just saying that the project looks 
good.

And don't worry about being "the mean one" :D This is exactly the 
kind of criticism that can help me improve Eko.

Thank you again for taking the time to review it!


More information about the Digitalmars-d mailing list