Hacker News new | past | comments | ask | show | jobs | submit login
Euboea – simple, fast, AOT-compiled programming language (github.com/krzysztofszewczyk)
38 points by _ertw on Feb 28, 2019 | hide | past | favorite | 43 comments



Is it a bit premature to promote this given that there's almost no information of any kind (docs, examples)?

As an entertaining aside, I find the consonant-vowel balance fascinating: KrzysztofSzewczyk/Euboea


Every time I see that sequence "Krzysz..." I think its something from SumatraPDF creator (Krzysztof Kowalczyk).

Somehow I cannot internalize that its a regular name somewhere and I need to check the last name as well..

My neighbor (Brazil) name spells Cristofer which is really the same name.


Is the name coming from this place in Greece? https://goo.gl/maps/mvMYQwErCXk


Yes.


Please check the wiki and examples directory :)


I must be missing something...?

Following the HN link, I arrive at the github project page for KrzysztofSzewczyk/Euboea.

Scrolling down, I see in the readme text a section called Learning Euboea. That section tells me to go to the wiki (via a provided link).

Following that link, I find a wiki with three pages. Those three pages have very little substance.

Now I do notice the examples folder in the source, but even that just seems to have very limited snippets. I guess I was just expecting something different.


https://github.com/KrzysztofSzewczyk/Euboea/wiki/Learning-Eu...

Very simplistic crash course with ton of examples.


Wiki is not completed yet, but I'll be working on it.


Why does it say AOT in the title and the README, but JIT in the project description? Did that change at one point and the description wasn't updated?

Edit: Actually it says AOT at the beginning of the README, but then JIT later in the Philosophy section. So I guess if the README has been updated, it's been updated incompletely.


I know this is (maybe) a little nit-picky, but what exactly does "blazingly fast" mean here? The README compares its performance in benchmarks against Lua, but Lua is not necessarily "blazingly fast" either when compared to outputs from C, C++, Rust, etc.

It's a term I hear everywhere (especially in the JS world), but I don't really understand what it implies.


> ...but I don't really understand what it implies

It means "faster than the slowest language currently in common use, I guess".


"Blazingly" is the "literally" of software project speak. It means nothing.


It frustrates me too. I'm always on the look out for languages that implement modern performance approaches into their design. I'd love to see a language that focuses on data orientated design, auto-vectorisation and possibly something like reference capabilities for concurrent programming. That language would truly be "blazingly fast".


JavaScript is often misusing this term, I'll benchmark Euboea against Rust or C++ soon.


Seem bizarre to push being only four times faster than straight lua when it is compiled to native instructions. Lua is 50x-100x slower than a native binary.


Yes, at first I thought it was comparing against luajit, which is indeed blazingly fast. But for a compiled language just to be 4x faster than lua, I fail to see the point (of emphasizing it speed, not of the language itself).


We actually compared stock lua to luajit in production, for something with high load and serious performance requirements.

The difference turned out to be no big deal, less than x2 in speed. The real performance killer seems to be garbage collection and chasing pointers due to inefficient data structures. Luajit doesn't help much here.

In the end we went with stock lua because it doesn't have the 1 gigabyte memory limit, and so can use a much larger thread pool.


I have tested it myself and it's nearly as fast as luajit, but I didn't publish results. It doesn't mean you can't try it yourself!


I've only heard AOT used when referring to languages that are normally JIT'ed. If this compiles straight to native, why call it AOT?


No win support planned ?


Currently no, but any help on it would be greatly appreciated!


can someone give a dumbed down version of what a AOT compilation consists of for someone who doesn't have a background in programming languages


AOT (ahead of time) is your code is turned into machine code before you run it.

JIT (just in time) is your code turning into into machine code as you run it. Machine code is what your CPU directly processes, so it can be very fast.

AOT languages can use more expensive techniques to make super optimised machine code since the cost is upfront when compiling the code, not when running it. But JIT languages can have features that exploit the fact that machine code is made on the fly.

AOT programming languages: C++, C, Rust

JIT programming languages: C#, Javascript, Java


But why does the README say

> Use JIT compilation

then?


It's what people think of when they mean "compiled" in the first place: ahead of time, i.e. before you start the program, as opposed to JIT "just in time" where you compile (and re-compile) parts while other parts are already running.


dasm is the right tool for this. call me convinced.


YAUL ?


Quick Review (WARNING: contains controversial opinions!)

Good:

- "minimal usable set of keywords and control structures"

- "simple cooperation with C"

- "no access to files on physical drive"

- reasonably terse syntax (except for "end instead of braces")

Bad:

- The name of the language, I don't know how to pronounce it and I can't remember how to type it. Rename to "Boa" or similar.

- The name of the author, it's a bad transliteration. Rename to "Christoph Shoechuck" or similar.

- "focus on targeting UNIX-like operating system"

- "intended to be used with shell scripts" - shell scripts are brittle and awful to write

- end instead of braces

What:

- isn't AOT and JIT contradictory?

- isn't interfacing with C and "no access to files" contradictory?

Conclusion:

I like a simple, small and embeddable language, but I don't want to embed anything in shell scripts and I don't want to depend on UNIX.


I've made a mistake while creating thread and I think I'm no longer able to edit the title.

I'm from Poland, so such name is natural for us.

Euboea depends on POSIX and X86 highly, therefore I thought about Euboea like about another text processing / computation language to be used in shell scripts making programming easier.

> isn't interfacing with C and "no access to files" contradictory

As UNIX philosophy states, CLI tools may use stdin and stdout (among other streams), to read data, process it, and output it back. Also, this model is ensuring a) safety, b) simplicity.

Interfacing with C is actually not that advanced right now and all you can do is to specify C function name by modifying libE.c, it's exported name usable from Euboea and amount of parameters (-1 if vararg)


> I'm from Poland, so such name is natural for us.

I'm aware, but your global audience is generally not. That's why I advise on name changes. You own your name, you can do anything to it. There are people from India with names so long that a byte overflows and there are people from Africa with exclamation marks (click sounds) in their names. I'm sure there's a great cultural heritage behind these names, but they're just impractical.

If I don't know how to pronounce a name, I am going to avoid you just a little bit more. I'm less likely to remember your name. I'll have to look it up to spell it right. Should I get into the unfortunate situation of having to pronounce it in public, I'm likely to embarrass myself.

In short, your name is a risk to me. A small risk, all things considered, but a risk nonetheless. It's causing me extra work. A small amount of extra work, but extra work nonetheless.

The thing is, it's not just me, it's almost everyone, even those who wouldn't dare admit it or those who are unconscious of it. All those tiny little negatives add up to a significant negative in your life. Studies show that "foreign-sounding" names lead to less job interviews, for instance, but it doesn't end there.

Of course, if you hate success (as is common in Poland) you might not be bothered by all of that. Sour grapes, but fair.

> Euboea depends on POSIX and X86 highly, therefore I thought about Euboea like about another text processing / computation language to be used in shell scripts making programming easier.

If that's the focus, your selling point should be something along these lines of "a simple programming language to create UNIX tools", because that's really what distinguishes it. I also think you can then give up on the whole "safety" aspect, because UNIX fundamentally is unsafe and "no access to files" becomes a limitation, not a feature.


> That's why I advise on name changes

What astonishing presumption

> Of course, if you hate success (as is common in Poland)

Is the casual racism completely necessary? Couldn't you just stick to the critique of the work rather than the person and his nationality?


> What astonishing presumption

There's tons of evidence:

https://www.newyorker.com/tech/annals-of-technology/why-your...

If it's "presumptious" of me to point that out, I don't care. Only ever telling people what they want to hear is not helpful.

> Is the casual racism completely necessary?

Is the casual accusation of racism completely necessary?

It has nothing to do with race, more with history. Crab mentality is very common in the former "eastern block".

> Couldn't you just stick to the critique of the work rather than the person and his nationality?

I'm not criticizing the person's nationality, that's not their choice. I'm drawing the distinction between the individual and their nationality. You can be a proud Pole, doing polish things, espousing polish ideals and mannerisms above all else, whatever. You also can be an individual in global society who happens to be from Poland.


You don’t need to cite the prevalence of racist bigotry. Most people are aware.

Practising it is fucking despicable.


> You don’t need to cite the prevalence of racist bigotry. Most people are aware.

If you think discriminating based on difficult names is "racist bigotry", okay. It doesn't change the facts. If you want free discrimination showered upon you, keep your unpronouncable foreign name. If you want success, change it. It is common practice for a reason.

> Practising it is fucking despicable.

You know what's despicable? Accusing people of "being racist" for just acting like ordinary people happen to act. It's diminishing the impact of the word. Ordinary people, including you, do have these biases. Consciously, unconsciously, it doesn't matter.

I want people to do better for themselves, I can't change the world for them. Neither can you by leaving these comments on HN.


It’s common practice because there are a lot of racist bigots. That’s not a particularly compelling reason.

You suggested to someone that they hide their heritage so you don’t think less of them. You may consider that ordinary. But that’s common or garden racism.

And your inability to pronounce someone’s name is a failing in your education or experience. Your failing, not theirs.


> You suggested to someone that they hide their heritage so you don’t think less of them.

That's actually not true, that's your warped perception of what I'm saying. Your brain happens to portray me as a caricature of everything that's wrong in the world - a common bias you may not be conscious of.

Let's take my standpoint to the extreme. Let's say I know there's a bunch of violent Nazis roaming the streets and I suggest not to wear a Star Of David out there in public. Does that make me a Nazi or an endorser of Nazism? If I was the Nazi, wouldn't I rather want to withhold that piece of information?

In any event, your name is not your heritage and your heritage is not you.

> And your inability to pronounce someone’s name is a failing in your education or experience. Your failing, not theirs.

That's actually a pretty arrogant thing to say. Let's say there's an Indian restaurant chain that serves food worldwide. Are you going to say they'd be denying their heritage, if they tuned down the spices in markets where people generally can't stand hot food? Is it the failing of the people if they don't return after eating just one meal that was too spicy? You know what, maybe it is. That restaurant chain is still going out of business there.

Again, if you don't care about success, go all in with staying "true to your heritage" if you like to. Keep your unpronouncable name and insist on it being pronounced correctly.


I think complaing about author's and project's name is out of place.


I'm not complaining, your name choices aren't grievances of mine. I couldn't care less about the name of a stranger on the internet.

I'm informing you that they're objectively going to lower your chance of success. Considering that it is "impolite" to tell that to someone, it becomes uncommon knowledge. Fortunately, I'm not a polite person.

For what it's worth, if I had any scientific evidence that having an Anime avatar on Github lowered your chances of success, I would tell you that as well.

I will leave you with this quote by Donald Knuth:

"The most important thing in the programming language is the name. A language will not succeed without a good name. I have recently invented a very good name and now I am looking for a suitable language."


The name is just spelled like [ˈevia]. You know, we don't choose names ourselves. I feel comfortable with Krzysztof Szewczyk, but if it's risky for you, nothing stops you from calling me somewhat different.

This avatar wasn't taken from anime. It's drawing of Alexios Komnenos.


> The name is just spelled like [ˈevia].

I don't understand what that means.

> You know, we don't choose names ourselves.

Who is this "we" people? What makes you so sure you belong to them, bound by their arcane rules?

> I feel comfortable with Krzysztof Szewczyk, but if it's risky for you, nothing stops you from calling me somewhat different.

Thanks, Chris.

> This avatar wasn't taken from anime.

It looks like anime, therefore it is anime, for all practical purposes.

> It's drawing of Alexios Komnenos.

Let's just say I have no idea what Anime Alexios is supposed to communicate to me.



You mean it is pronounced like [ˈevia] in an alphabet that I don't understand and will not learn? See, that's why the name is bad. Why make people jump through pointless extra hoops? That's not UNIX-like at all!


Well, I've seen sometimes bizzare progarmming language names with spelling explaination.

But to be honest, I don't care how my language will be called. I'm not crazy about the correctness of the pronunciation of my name too.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: