DEV Community

Cover image for We created the Crystal language, ask us anything!
Matías García Isaía for Crystal Language

Posted on with Brian J. Cardiff and Martin Verzilli • Updated on

We created the Crystal language, ask us anything!

Hi there!

I'm Matias Garcia Isaia, and together with Brian Cardiff and Martin Verzilli, we're part of the Crystal Team working at Manas.Tech.

Manas.Tech is a software company from Buenos Aires, Argentina, that develops unconventional tech projects for people around the world. And, after being involved in Crystal's development for a while, I can assure you there are not that many conventional things in developing a programming language!

Crystal is a programming language that aims to be friendly for both humans and computers alike - make developers enjoy writing code, and make code run as efficiently as it can. Statically typed, compiled language with a really heavy type inference to make it feel as scripting - the best of both worlds. And did I say it's open source?

Its first commit has just turned 5, and it has changed from an individual's hobby back then into an amazing language supported by Manas.Tech and an amazing community. To celebrate that, we are doing this AMA. Starting today, at 2PM EST, we'll do our best to share with you everything we know about the project, life, the universe, and everything!

So - don't be shy, ask us anything!

Latest comments (106)

Collapse
 
intermundos profile image
intermundos

Hello guys,

Great work you do. Crystal looks nice and performant.

How close are you to v1 today?

Collapse
 
coalboy profile image
Yaymaha

How do you make a language with itself?, I see the code and its 98.2% crystal, how does this works(I'm asking this cuz I'm trying to make my own language)

Collapse
 
matiasgarciaisaia profile image
Matías García Isaía

Hi Yaymaha!

You can read a bit about that in this blog post.

Long story short: "a language" is just an specification of how to write stuff. You can create a language right now, stating what constructs are legal in your language - and that's it.

But... A PROGRAMMING language isn't really useful unless you have something that allows people's code in that language to actually do something. So you probably would want to also provide a compiler or interpreter able to read source code in that language and make things happen.

The story of Crystal's compiler is there, in the blog post :)

You start by writing a program in other, previously existing language that can read source code from your language and turn that into instructions. Then you make your language (both specification and compiler/interpreter) more feature rich, up to the point in which you can write in your language a program that reads source code in your language and generates runnable programs - and that's the compiler/interpreter of your language, written in your language itself!

Collapse
 
mr_sportsgeek profile image
Mr. Sports Geek

Crystal Conf would be totally exciting if it were true. I would do anything to make it happen.

TurboBuyer

Collapse
 
wontruefree profile image
Jack
Collapse
 
mortezakcode profile image
morteza jahangard

I will die of waiting. Please release the version of Windows.
i work for iran goverment and i develop weather Station apps
no body here like me understand data loggers and i want to force our team to use CRYSTAL in production but because of havnt windows version they don't accept
the day i be happy is the day you release windows version . cause of many reasons we cant use windows 10 bash and i should wait for you :((

Collapse
 
matiasgarciaisaia profile image
Matías García Isaía

I hope you don't literally die because of this - that's not any of the language goals, for sure.

Windows support is definitely on the list of Things We Want To Do™, but it's not there yet. As we always repeat - instead of dying, you can try getting yourself involved in the efforts (there's been a couple of trials at this, you can ask on the forum for guidance if needed), and/or help the fundraising so the team can devote more time to develop Crystal itself and, at some point in time, Windows support specifically.

Good luck with the project!

Collapse
 
alexanderandrade profile image
Alexander

Hello, could you approximately say, when would 1.0 be released ?

Collapse
 
matiasgarciaisaia profile image
Matías García Isaía

Hi Alexander!

"Whenever it's ready" is the best answer, although probably not the one you're looking for :)

We don't have an estimated date yet. We tried to set one once, and then we did lot's of great things - except releasing 1.0.

So we're focusing on working on the language & the community & everything else, and we'll call it 1.0 whenever we feel it is 1.0.

As a user, I had once to update a codebase from Crystal 0.23.0 to 0.24.1 and it was really easy to do. I personally think that not-being-1.0 is not enough of a reason not to use Crystal in a project - but your mileage may vary, as always :)

One more thing - whenever we hit 1.0, I promise you'll notice :)

Cheers!

Collapse
 
satb profile image
satb

Is the goal still to get to 1.0 by the end of the year?

Collapse
 
matiasgarciaisaia profile image
Matías García Isaía

Hi there!

Nico talked a bit about 1.0.

We'll probably not hit 1.0 this year - it was a really optimistic goal to pursue, a bit more of a motivation than an actual expectation if you asked me - but it probably won't get those 14 months either, hopefully :)

Collapse
 
tonyvince profile image
Tony Vincent T.Y • Edited

What are some typical use cases of crystal lang?

Collapse
 
nimmyjvipin profile image
NIMMY J VIPIN

Any of the crystal framework usable in windows?

Collapse
 
matiasgarciaisaia profile image
Matías García Isaía

There's not much left to add to Faustino's answer - ¡gracias! 😉

The closest kind-of-stable approach to Crystal on Windows is using the Linux Subsystem that comes with Windows 10. At least the Crystal Playground is really usable from there, even if it hardly counts as "native".

Other than that, what Faustino said - there are efforts on that path, but we don't officially support Windows yet :/

Collapse
 
vikkio88 profile image
Vincenzo

I know and I saw that too, I am really interested into your project and I hope you succeed. I was just trolling :D

I really find Crystal syntax 1000 times better than go or rust. I would start to work with it if it was widely adopted as go is.

Collapse
 
vikkio88 profile image
Vincenzo • Edited

why did you do that?

edit:
Relevant xkcd

Collapse
 
matiasgarciaisaia profile image
Matías García Isaía

Cause we can! 😀

Or, actually, to see if we could!

Really - Crystal was Ary's hobby project at the time. He might (or might not) explain better his motivations at the time, but it was just something fun to do.

At some point, we saw the project had potential - after having used that many programming languages, we could finally create our own one, with the things we liked about others, and without the things we didn't. Or up to a certain level, at least.

Fast-forward some time & efforts, we Manas.Tech as a company saw this could really work - and that it would really improve our day-to-day job if we could develop products to our clients using a language that makes us as happy as we want Crystal to do.

So here we are :)

Collapse
 
aswathm78 profile image
Aswath KNM

Hey Guys!!!

I'm a beginner , Would you recommend to learn Crystal as first language ?

If yes , Can you explain the learning path ?

Collapse
 
cyan101 profile image
Cyan101

Any chance of official binaries from ARM devices being released soon/at all? would make developing much nicer as my server box is an Armv8 device and many things like the Raspberry Pi are too

Collapse
 
val_baca profile image
Valentin Baca

Are there any plans (or hesitations) about extending into areas other than backend servers where binary efficiency and ease of expressiveness matters?

For example, embedded or IoT?

Collapse
 
matiasgarciaisaia profile image
Matías García Isaía

I think we're still trying to learn all the different use cases in which Crystal may be an awesome match, but I'm not that sure that's something you can plan - I feel it's a bit ecosystem-driven.

One awesome use case for Crystal that isn't that explored yet is all the command line tools made in Ruby (I'm thinking about fastlane, CocoaPods, Vagrant, Chef, you-name-it) that don't have to do with Ruby code. There's a great boost in performance if you run a command and you don't have to load the whole interpreter + parse + interpret live for a shortly-lived process - that, if you run it again, will go through the same overhead once again.

IoT and embedded systems are things we have on radar, but we still haven't found how that will play with the fact of being a GCed language, for example.

But you can toy with it as Faustino here says, and let us know how the language could fit your use cases better!

Collapse
 
stewartjarod profile image
Jarod Stewart

What packages / core libraries are highly sought after?

Collapse
 
matiasgarciaisaia profile image
Matías García Isaía

There's a community-driven repo to track libraries that are wanted - that's a nice place to start looking for!

You can also jump into any of the community channels to ask for more ideas 👍

Collapse
 
bcardiff profile image
Brian J. Cardiff

Some things that bugs me a little bit in the language are:

  1. the lack of variance in generics.
  2. that some types can be expressed thanks to macros but not in the grammar (difference / substraction of types)
  3. that / should always be float division (instead of depending on the receiver/argument types).
  4. that the grammar type can't be blend with the language grammar.

So I am pretty happy with the language :-)

From the ecosystem, there are some stories to be improved in dependency management and development tools.