Closed stugol closed 8 years ago
I hear you, none of us can invest time and resources in projects that won't ultimately do what we need!
Since I'm the sole main dev'er of Onyx atm, I'll just share my personal views on the questions (duh).
Yes, threading is important. I have two projects of primary interest to code in Onyx, and they both rely on Threading being available, so as you can see our need overlap strongly there. I will jump on to these issues as soon as Onyx is stabilized conceptually (well, and implementation-wise of course). And if not already in Crystal then, or accepted into Crystal in any way, will have to deviate from the compatibility goal (on parallelism at least - most other crystal-shard should probably work anyway), since I need that to go forward myself.
Also here we seem to share views. Storage space today is ridiculously cheap, frankly personally I don't understand why not all programs (barr some core-close programs that share a lot of code-mapping in mem) are statically compiled (yes, there are of course ramifications on RAM-usage also) - it would cause a hell of a lot less dep-problems for end users. So, this too is an area of interest to me - it should be dead simple for an end-user to download, install and use an application. It might be attainable other ways too, will have to figure it out then. I prioritize Threading even higher though!
Well, these are my own needs, and you'll just have to weigh your trust in my dedication to Onyx. (Oh, and it's my dream project :-) ).
Also method aliases have to work for methods that accept blocks. Currently this is horribly broken in Crystal; but given your current babelfish focus, that should be trivially easy to fix.
Great to hear you're on board with these concerns. And I agree: all programs should work this way. DLLs shouldn't even bloody exist anymore! They were invented to solve space issues on tiny computers with 16k of RAM and a floppy drive. Jesus christ, when will people stop living in the stone age??
As you are probably aware by now, I consider Crystal's lack of threading and static linking to be a deal-breaker. All modern CPUs have multiple cores, sometimes as many as 16, and being limited to a single core harms both performance and non-blocking concurrency. Fibers have their limitations - especially in Crystal, where
IO.select
deadlocks the entire sodding program instead of switching fibers.Further, static compilation is necessary, when you consider the massive pile of complicated shit you have to install and/or build just to get the compiler to work in the first place. Forcing end-users to compile LLVM before using my program is just ridiculous!
Onyx inherits both of these defects from Crystal, and that's a serious problem.
I accept that Onyx is not yet in a usable state. It's still being designed; the syntax changes on a daily basis; and it obviously isn't yet suited for production work. But that will change, so I'm not overly concerned, and its current alpha status doesn't dissuade me from being part of its development.
What does concern me is the hereditary Crystal defects it inherits. If Onyx will suffer from these same deal-breaking limitations, then I have no use for it. I realise that threading is non-trivial to implement, but it still needs to be done. Without it, the language is simply broken.
So what I'm looking for here is a commitment to solving these problems, either in Onyx or in the base Crystal. They don't have to be fixed today, but it needs to be a High Priority™.
I like Onyx, and enjoy being part of its development. But if I'm not going to be using it, then my interest will, sadly, rapidly evaporate.