Crystal

Ary Borenszweig ary at esperanto.org.ar
Sat Feb 16 22:28:08 PST 2013


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


More information about the Digitalmars-d-announce mailing list