
Crystal 0.25 - galfarragem
https://crystal-lang.org/2018/06/15/crystal-0.25.0-released.html
======
faitswulff
As a long-time Rubyist, I took a serious look at Crystal for the first time
and discovered a lot of the best batteries of Ruby included in Crystal. So
pleased to find an RSpec-like DSL for testing, for example, and Crystal's
Rails-like framework, Amber, generates scaffolds with Bootstrap built in. It's
almost cheating how much learning and takeaways the Crystal core team can
borrow from Ruby! I'm really liking it so far.

~~~
ksec
While Ruby allows you to choose and provide way too many choices, many guns
for you to shoot your foot into. Crystal decided some are not good and
actually enforce those best practices.

I think Lucky [1] is actually a more Rails Like framework. ( Or more like both
are NOT like Rails. As features rich or heavyweight, Rails provides more then
you will ever need. )

[1][https://luckyframework.org/why-lucky/](https://luckyframework.org/why-
lucky/)

------
samuell
I'm confused about the state of threading in Crystal. See the last message in
: [https://github.com/crystal-
lang/crystal/issues/1967#issuecom...](https://github.com/crystal-
lang/crystal/issues/1967#issuecomment-391321948)

I'm hoping to see more languages with light-weight threads automatically
mapped (multiplexed) to physical threads, like in Go. So far, based on the
crowd-sourced table I started working on, it is otherwise only Ada, Haskell
and Pony (in addition to Go) that seems to meet these criteria:

[https://docs.google.com/spreadsheets/d/1BAiJR026ih1U8HoRw__n...](https://docs.google.com/spreadsheets/d/1BAiJR026ih1U8HoRw__nzbCSFnnHicWrjxpW5l6-O3w/edit#gid=0)

~~~
RX14
Crystal will eventually have go-style parallelism as well as go-style
concurrency. It's a hard thing to implement, and we don't have the resources
of google (in fact we have very little resources at all) so it's taking time.
Until 3 weeks ago, nobody at all was working full-time on crystal, it was
entirely a spare-time project, so progress is slow, i'm incredibly proud of
what we've managed to achieve so far and looking forward to more in the
future.

Really, the best way to help the language is to donate:
[https://salt.bountysource.com/teams/crystal-
lang](https://salt.bountysource.com/teams/crystal-lang)

~~~
samuell
Great to hear, thanks for the info!

------
woodruffw
I've been using (and contributing to) Crystal for some small projects over the
last few months. Writing C bindings within it is amazingly stress-free[1].

It's still an unstable language (there are plenty of breaking changes in this
release), but I highly recommend it -- especially if you like both static
typing and Ruby.

[1]:
[https://github.com/woodruffw/x_do.cr/blob/master/src/x_do/li...](https://github.com/woodruffw/x_do.cr/blob/master/src/x_do/libxdo.cr)

------
prydt
I really like Crystal, and while it hasn't reached a 1.0 yet, it is still
great and used in production. I think the main selling point of Crystal is
performance + nice syntax. The docs are great and will help anyone curious to
learn Crystal along the way. Crystal's biggest problem is that it doesn't have
the support of a company or a large base of users so the core team isn't
funded as much as they'd like. All in all, I think it is a great language!

~~~
omaranto
> Crystal's biggest problem is that it doesn't have the support of a company

I thought it was supported by Manas
([https://manas.tech/](https://manas.tech/)).

~~~
RX14
Manas is a tiny company without the resources to spare a single developer. The
money to pay for the single developer who is working full-time on crystal
comes entirely from bountysource and other donations:
[https://salt.bountysource.com/teams/crystal-
lang](https://salt.bountysource.com/teams/crystal-lang)

------
j1elo
Great to see some steps made towards supporting Windows! (i.e. "non-POSIX
systems")

Now a pressing issue (though not for everyone) is that the compiler needs to
escale from the current state because it takes too much memory and too much
time to compile, but last time I checked it still wasn't crystal clear how to
improve it.

~~~
kowdermeister
Oh, they copied neglecting windows from RoR? :/ That was the reason I skipped
Rails back in the day.

~~~
RX14
Crystal is still fairly early in it's development. We have plenty of time
available to make the breaking changes required to make windows a true first
class citizen. I'm putting a lot of thought into how to do this.

------
bazeblackwood
I really, really like Crystal — the Ruby syntax is great, and better type
safety is always a plus.

But I haven't found a reliable way for building a binary on a Mac OS without
requiring dyld already be present on the target user's system. Seems none of
the following issues are resolved, or that the project has indicated a
recommended way to do this?

[https://github.com/crystal-
lang/crystal/issues?utf8=%E2%9C%9...](https://github.com/crystal-
lang/crystal/issues?utf8=%E2%9C%93&q=dyld%3A+Library+not+loaded)

~~~
Birch-san
I had a crack at fixing this. Could you try my make_portable.sh script on one
of your Crystal binaries?

[https://github.com/crystal-
lang/crystal/issues/3067#issuecom...](https://github.com/crystal-
lang/crystal/issues/3067#issuecomment-397841583)

------
krylon
I am on openSUSE, and I just realized I can install Crystal from the RPM
repository (well, duh! I should have thought of that a lot sooner...), so I
now have no excuse left to play around with it a little. I also happen to be
on vacation right now, so I have plenty of time on my hands. =D

Now the only thing that bothers me is the lack of a REPL. It comes with a web-
based playground which is pretty nice, but still not quite the same. Is there
any chance Crystal _does_ have a true REPL which I just managed to miss? (If
not, it's not a dealbreaker - Go doesn't have a REPL, either[0]. But it still
would be nice.)

[0] I know, I know, there are third-party REPLs like gore, but by the time I
found out about them, my need for one had diminished a lot.

~~~
woodruffw
There's the semi-official ICR[1].

[1]: [https://github.com/crystal-community/icr](https://github.com/crystal-
community/icr)

~~~
RX14
It's not official, largely because it's a big hack.

~~~
woodruffw
Whoops. I thought it was official due to issues on crystal/crystal about it,
my bad.

------
_RPM
I think I asked this in the past, but how did Crystal become self hosted?

~~~
simen
Naturally for a language based off Ruby, the original compiler was written in
Ruby. It became self-hosting in late 2013: [https://crystal-
lang.org/2013/11/14/good-bye-ruby-thursday.h...](https://crystal-
lang.org/2013/11/14/good-bye-ruby-thursday.html)

------
jaequery
is there like Sinatra equivalent for Crystal? and what is the go to ORM for
Postgres in Crystal?

~~~
steveklabnik
[https://github.com/kemalcr/kemal](https://github.com/kemalcr/kemal)

No idea about ORMs though.

------
faaq
Wow, amazing!

Well, a couple of breaking changes, but...

still amazing!

------
jaequery
only thing I don't like about Ruby is the "symbols". if there was a new
language that copied everything about Ruby minus the symbols, I'd be all over
it.

what is the reasoning for a language like Crystal to support symbols? i am
under the impression that is just a relic of the past due to performance
reasons but it is not the case anymore.

~~~
yebyen
What have you got against symbols exactly?

I don't know enough about the reasons why they are implemented to argue this
strongly, but I know that they are immutable and that they are one step closer
to the language in the sense that, constructions which you may not use in an
unquoted symbol, are also not allowed to be used in a Ruby method name.

That seems like a handy data structure to have around next to a string (and
nobody's stopping you from using a string if you wanted a string and not a
symbol, ...or are they?)

~~~
samatman
In Lua, symbols are just strings, all strings are immutable via internment,
and the symbol rules constrain the parser, not the runtime. So obj.field is
shorthand for obj["field"], you can have obj["="] if you want, it means obj.=
but that is of course a syntax error.

I find this approach more comfortable and easy to reason about than a separate
Symbol class.

~~~
yebyen
Thanks!

Pretty sure you can get progressive versions of this type of behavior (where
obj["field"] is equivalent to obj[:field] or obj.field) by using Ruby's
HashWithIndifferentAccess and/or OpenStruct classes, but those are both
obviously more obscure than something which is a built-in default language
feature.

~~~
samatman
It's one of several decisions that make Lua's type system easy to reason
about. Another one is that environments themselves are simply tables, the
global is _G, and environments can be set and retrieved on functions.

Kinda like mutable Mars ^_^

------
darkcha0s
Why is Crystal popping up so much on HN and why do all these comments read
like advertisements

~~~
coldtea
> _Why is Crystal popping up so much on HN_

1) Because HN is a social news website, so when someone reads a post about a
subject, others are reminded of it, and can post in return. This happens with
all popular topics, they come in batches.

2) Because Crystal is getting more popular (e.g. it jumped TIOBE rank for what
it's worth), and more people like to read and hence vote such articles.

3) There's a huge conspiracy, with marketing shills and aliens, for an OSS
language.

4) More than Go or Rust or React or Ruby back in the day?

Take your pick

