Crystal
Jordan Miner
jminer7 at gmail.com
Tue Feb 26 19:48:44 PST 2013
On Sunday, 17 February 2013 at 06:28:09 UTC, Ary Borenszweig
wrote:
> Hello everyone :-)
>
> I follow this newsgroup from time to time. I like D templates.
> I like the auto keyword. I like auto in templates. I love
> efficiency and expressiveness.
>
> I believe in smart compilers.
>
> (you might remember me: I'm the author of Descent)
>
> I *really* like D, because it cares about one thing I care
> about: *performance*. Let's save this world's energy. Let's
> make a better world. Let's make users' life more enjoyable.
> Let's be happy :-)
>
> But... do we really have to specify const pure safe nothrow and
> whatnot? Can't the compiler be smarter? I'm sure there must be
> a better way. Most new programming languages look like older
> ones. Newness comes slowly...
>
> One time I asked in this newsgroup if it was possible to have
> an "auto" keyword for function/method arguments. And... why not
> make all functions/methods be templates on the type of its
> arguments?
>
> I think nobody liked this idea. I said "Ruby is like this: you
> never specify types in method definitions".
>
> "But Ruby is not efficient". "Ruby is a dynamic language". "D
> is compiled, so it's faster". "Don't make the mistake of
> comparing a dynamic language with a static/systems programming
> language". This were some of the answers I got.
>
> I started thinking about this idea: a compiled language that
> looked like a dynamic language. Is it possible?
>
> Today, I'd like you to take a look at what me and my friend
> Juan have been working on for the last half month or so. It's a
> new programming language which aims to be efficient, have
> similar syntax to Ruby, and where you never have to specify
> types of variables and arguments.
>
> https://github.com/manastech/crystal/wiki/Introduction
>
> I'd also like to ask you:
>
> 1. Do you know whether a similar language exists?
> 2. Do you think it's feasible? Right now we are getting rather
> high compilation times (say, a minute) if we use lots of
> generic classes on medium-large programs. We are still trying
> to think of the best way to improve compilation times while at
> the same time taking off programmer's burden.
>
> (The compiler is written in Ruby, which is a bit slow, so that
> might be one reason it is a bit slow on medium-large
> programs... imagine Ruby might be 10 to 100 times slower than
> C, so that minute might be reduced to less than a second... we
> are currently working on bootstrapping the compiler... but if
> compilation is on an exponential order, well, you know... ...
> and the compiler is written in Ruby because it'll later (now?)
> be easier to port to Crystal, which has a very similar syntax)
>
> I ask about feasibility, but right now you can use this
> language for small to medium programs (except the standard
> library is still incomplete).
>
> The goal of this programming language it so be as efficient as
> possible, but probably it won't be as efficient as C in the
> general case. But... who knows?
>
> We are also thinking about incorporating concurrency features,
> like the ones present in Erlang and Go.
>
> In short: utopy =o)
>
> I hope at least someone likes this project...
>
> (I hope at least you, Jacob Carlborg, Ruby lover, find it
> interesting... or maybe you, bearophile?)
>
> Thanks for your comments,
> Ary
>
> P.S.: bin/crystal -e 'a = 0; 10.times { |i| a += i }; puts a'
> -O3 -ll
I think this project is really interesting. I really like Ruby,
but I don't use it much because it is very slow. Another problem
I have with Ruby is that if you, say, rename a method but miss a
place it is called, you won't get an error until you try
executing that code at runtime (although I suppose tests should
catch that). Crystal fixes both of these. Also, I like how you
can call C functions. And it has macros.
It does make me wish that LLVM supported exceptions on Windows...
More information about the Digitalmars-d-announce
mailing list