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

pouya1dev poyaxc545 at gmail.com
Wed Aug 26 14:57:55 UTC 2026


On Saturday, 22 August 2026 at 11:32:04 UTC, pouya1dev wrote:
> 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!

By the way, I’ve set up a blog where I document the development 
of Eko and post daily updates about the changes made to the 
project.

https://uxdevp.blogspot.com/


More information about the Digitalmars-d mailing list