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)
Hello guys,
Great work you do. Crystal looks nice and performant.
How close are you to v1 today?
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)
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!
Crystal Conf would be totally exciting if it were true. I would do anything to make it happen.
TurboBuyer
Its happening!!
eventbrite.com.ar/e/crystal-confer...
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 :((
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!
Hello, could you approximately say, when would 1.0 be released ?
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!
Is the goal still to get to 1.0 by the end of the year?
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 :)
What are some typical use cases of crystal lang?
Any of the crystal framework usable in windows?
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 :/
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.
why did you do that?
edit:
Relevant xkcd
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 :)
Hey Guys!!!
I'm a beginner , Would you recommend to learn Crystal as first language ?
If yes , Can you explain the learning path ?
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
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?
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!
What packages / core libraries are highly sought after?
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 👍
Some things that bugs me a little bit in the language are:
/
should always be float division (instead of depending on the receiver/argument types).So I am pretty happy with the language :-)
From the ecosystem, there are some stories to be improved in dependency management and development tools.