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