When crystal-lang 1.x will be released?

I believe we’re almost through with (1). Full windows support is still a way to go, but most platform-specific APIs have been redesigned or are currently in the process.
(2) is definitely going to happen before 1.0, but it’s probably not going to cause much breaking changes because we’ll only need to change the implementation, not the API.

So these are not the biggest issues with forward compatibility in stdlib. But there are other API that are IMO in dire need of a redesign, for example HTTP::Client and the entire Socket API.
We’ll also need to consider which parts of stdlib should stay in stdlib in which should be moved to shards.

At last, more critical changes are to be made to the language: (4) is maybe not so much a huge problem because generics are currently pretty much usable and further extensions could probably be added without breaking changes (that needs to be investigated, though). (5) and (6) need to be addressed, obviously. And the future of symbols and enums is a major pending discussion. And maybe a few other things.
The trouble is that language changes tend to be way more complex than stdlib API changes :man_shrugging:

Indeed. That’s the reason why I wouldn’t want to rush to 1.0 either.

2 Likes

What’s the rush to reach 1.0?

Please explain how, on a personal level (like, your feelings, your income, your happiness, whatever) it will make a difference.

To me, if we rush 1.0 out then more people might start using the language and realizing there are more rough edges than what you would expect in a 1.0 release, building up a big negative critic.

The language is usable right now. There are rough edges but a lot of things can be done.

Someone doesn’t want to use Crystal because it’s not 1.0? Why do you care? Or, maybe it’s your boss or a company. Then I guess it’s fine, they are cautious.

I also wanted more people to learn and speak Esperanto. I eventually realized that as long as there are others who I can talk to, it’s fine. Getting more people in makes very little difference.

Maybe more people will join Crystal if it’s 1.0 and more people will be able to contribute? It doesn’t matter, because nobody in that new group will make significant changes, like changes to the language or compiler, or incremental compilation, etc.

So I really can’t see any benefit in rushing things.

6 Likes

Btw. not being at 1.0 doesn’t mean you should refrain from promoting Crystal.

1 Like

The idea you can’t make breaking changes to a language has been repeatedly proved false. The issue isn’t whether changes will break prior behavior (people’s code) the issue is how well will breaking changes be presented to the community.

We’ve seen Perl go from Perl 5 to Perl 6, which was so different it took a whole new name (Raku) to distinguish them so its users can decide which to use.

The same happened with Python, which is still in the (slow) process of migrating people (and distros) from Python 2 to Python 3.

The same now is happening with Ruby. Matz publicly acknowledges that the process going from Ruby 1.9 to 2.0 was bad, but there were “mistakes” in the language that needed fixing. So now Ruby has created a well publicized migration path to Ruby 3, which will break code (by necessity to add new|better features) in the 2.x series.

Making changes to make a language better is painful IF you wake up and find something has changed and you don’t know about it. However, if the user community is an integral part of the loop, and there is enough lead time, and sufficient documentation (articles, examples, tutorials, videos, etc) to inform people of the changes, it doesn’t have to be a dispair causing affair.

Crystal is small enough that it can take its time to create a functional release that meets its design criteria (i.e. it doesn’t have to satisfy some large set of external factors and forces to consider in this process, like Perl, Python, and Ruby had to).

For me, I’m primarily waiting on a fully functioning multi-threading framework, and I would consider that to be (with functionally everything else) a 1.0 release. But I use it for my personal enjoyment and have no other external factors to consider.

In the end, time will take care of all this.

There will be greater resistance to the promotion, and the effect is not good. Because of the version number, people will have different concerns about it. They’ll say, ok, I get it, I’ll check it out when it releases the stable version. What he really meant was, “I won’t bother with it until the inventor of the language gives me a stable version. Because I’m not sure the author is serious or capable of getting it done before releasing the stable edition.”

There is no such thing as perfect. By comparing with different things, we can always find the flaw in something. In the case of programming languages, even if it gets to 5. X, 6. X, or 7. X, it won’t be perfect.
Why release a stable version number? It’s a way of telling the user, "you can do something with it, and it won’t go wrong as far as the language promises. ". If you have to release a 1.0 version that you think is perfect, I don’t think that day will ever come. Because in the long course of development, the cognition of language developers will change, and a lot of things around them will affect them. They may change their original intention and gradually get lost.

As for version compatibility, let me also answer that question. If it’s backwards compatible that would be great, users would love it. If compatibility is not possible, the risk needs to be taken seriously from the user’s perspective, since the value of the language lies with its users rather than its inventors or development teams (for example, upgrading from php4 to php5 results in little modification of the user’s project code. The upgrade from php5 to php7 is still the same, and users feel great. In the words of the PHP product team, it was “user friendly and extremely harsh on compilers” -because it was so focused that the advent of ROR and Django in the early days still didn’t bother PHP. Because of some historical reasons there are still some PHP users complain, it is to make some changes, but by every upgrade to make changes to the user by availability of impact of the project, rather than violence. - this could be a one of the reasons why it continues to popular. As for Py3k, from the strategy of the market I think is a risky operation, many old customers don’t want to turn to py3. If it weren’t for the current ai wave, py’s fate would most likely be similar to ruby’s).

I think this topic can continue, please let me hear more creative ideas.

My background:
At present, I seldom do development work by myself. There are nearly 80,000 employees in my company, and I am in charge of the product development work of three teams. I’m looking at it more from a product perspective than a technology perspective.
Here are the techniques I’ve used
Java, 14 years
C + +, 3 years
PHP, 10 years
Python, 8 years

1 Like

Just to add to asterite’s post, the language is not only usable right now, but is used in production in several places.

In fact, the lead devs are active on the community channels and attentive to GitHub issues/help topics. There is no better time to start using Crystal than now.

What would you personally gain from Crystal being 1.0 this year?
I don’t understand why you keep trying to push this “Crystal 1.0 NOW” idea.

The problem is this:

Crystal is not a product. You can’t buy it.
You can only use it, help make it better, and help others use it.

If you have such a position in a large company, why not let money make your vision real?
Pay some people for development on Crystal, or have a Team in your company work on the language.

There are countless opportunities to help Crystal on the way to 1.0.

To be honest, due to health reasons, I’m not suitable for R & D work, although I like it very much. I’m willing to do something as I can for crystal, such as writing localized documents. As for the company, unless we officially use crystal language for commercial purposes, I think there will be a lot of useful module code submitted to the public Library at that time. One of our possible choices at present is to move from Java to kotlin.

Crystal, it’s a product, an open source product. If crystal’s core team is too focused on technical research and doesn’t consider its development strategy, its way forward may be very tortuous (docker technology is a good example. Strictly speaking, it has failed, although it developed well at the beginning, but its leaders made some wrong choices).

The development team of crystal language needs to follow certain user consensus, which is very important. Here is a very good case, Although it is a business case, its operation method is worth learning: Oracle database, a successful database product, as we all know. Its first commercial version number is: V2.0, because its founder thinks that even if it is V1.0 is not enough to give users enough sense of security feeling. Here, my focus is not on version number, but user consensus.

You can see the historical version record (development history) of Oracle database here:
https://docs.oracle.com/cd/E11882_01/server.112/e40540/intro.htm#CNCPT88784

Another thing I wholeheartedly disagree on.

Painting a oil painting by “user consensus” will not lead to a great work of art, but a brown blob and a wasted canvas.
Making movies that everyone likes leads to the meaningless drivel produced by Hollywood.
Interior design of Hotel chains are soulless for the same reason. They are made to appeal to everyone and succeed to appeal to no-one.

For the spirit and direction of Crystal it is vital to listen to TECHNICAL arguments. To take suggestions form the community and have the core team decide. Period.
No “democratic” process. No “needs to follow community consensus”.

I consider Crystal a kind of work of art. Focused on the very very intangible concept of “joy to use”.
This is the core of what attracted me to Ruby years ago, and it is what attracted me (more so) to Crystal.

The way forward for Crystal is not a “big push to 1.0” or “marketing campaign”.
The way forward is to have the people with the vision of the language keep doing their thing and give them the time and resources to keep making this piece of art.

That will attract users and contributors. A beautiful language, that is a joy to use.

Focusing on the development of Internet of things (IOT) and providing solutions may become an explosion point.
In the device processing layer considering performance, it provides programming features for lightweight IOT devices and domain specific accelerators; in the application layer, it provides programming languages for general computing devices and supports customized metaprogramming in various fields.
This is the spring tide in the next 10 years

That is funny, because I am allready running about 100 RaspberryPI3 in production in a role that you could call IoT (i.e interfacing with external hardware and connecting it to the internet)

Which goes to show that you don’t need version 1.0 to do something like that.
Also, for some (unscientific) stats:

Previous version of the device/software done in Node.js Version 10.X.Y (at the time):

  • Terrible performance compared to Crystal (delays went from seconds to 10s of milliseconds)
  • unmaintainable due to callback hell
  • Installation was a pain, due to node.js. Had to basically roll out whole disk images.
  • much less stable.
  • much slower development

Current version in Crystal:

  • so much faster that I had a bug that never happened on the node.js version because it was too slow.
  • in over 12 months exactly 1 support issue that was an actual bug/fault. Everything else was problems with cisco hardware that I interface with.
  • easily build binary debian package and deploy updates with OS tools.
  • rock stable in production 24/7 for over a year with 100+ installations.

Do I care that crystal is not 1.0?
Take a guess.

8 Likes

@mavu Glad to see a fellow nodejs refugee finding the light :D. Those reasons are literally my same experience

So, based on all these opinions shall we vote if Crystal v1.00 ready? :)

Having been using crystal in production apps for 2 years now, I’d say it’s not quite ready for a “1.0.0” tag just yet. It still feels a bit “wild west”. Right now we’re just seeing that sometimes our apps work solid, and then updates cause shaky issues like what we’re seeing at the moment.

With that said, I don’t think it’s too far off. Once the MT stuff is no longer in preview, and the spec suite is passing on windows, plus that sweet debugging stuff you’re working on, it’ll be an explosive 1.0 release. I think if we can just get more hands on with the current releases, that will really help to find the little bugs in the stdlib to help make it solid.

5 Likes

I may spend some time on Windows support if it will speedup the process.

4 Likes

That would be amazing! I’m buying a PC here soon, then I plan on jumping in for sure.

I will use VM as I have purchased Windows 10 licence that I don’t use. I am MacBook guy.

1 Like

I would really like Crystal to be 1.x but to be honest I have had deployed Crystal apps for 3+ years and they work great. If you want to build something in Crystal go for it. I have a new project I have been working on for a few months and I started it in Crystal+Lucky.

I would rather wait a little longer and not end up in a Python 3 situation. I think making sure the APIs (like HTTP::Client) and paradigms (Channels/Actors) of the language works as intended and work across multiple OS. Not only is this a good goal it also makes the language more future proof.

Saying this I told my job Crystal is ready for use and it is not 1.0 and that makes people nervous. I have to push them to realize it is OK and move with the changes in the Language.

5 Likes

I’m jumping on the subject with a very personal opinion.

I guess most of you here have job and/or comfortable position. That’s not something very difficult in IT with your level of passion and knowledge :smile:

For me, it’s a bit more tricky. As remote developer living in Asia, I’m having hard time to find a new job. Ruby on Rails position become rare these days with switch being made to Elixir or Go.
I can’t afford to work for US company, because of timezone. Many Europe countries nowadays are reluctant to hire developer outside of EU.

When I started committing myself with Crystal few years ago, I did it by passion but also believing that it might give a boost to my career.
So when I hear @asterite that’s not much people getting in is not a big different, I need to disagree on it because on my personal level, it makes difference between being expert on a tech nobody use and living comfortably knowing I would never run out of gig / contract.

So I don’t have the answer, I understand rushing 1.0 might be wrong.
I know also 1.0 will change the vision the industry has over the language, in term of usage.
And I’m deeply waiting for it.

1 Like

Open source projects helps to expose your skills so you have better skills transparency for the possible clients.
For the client it is always a hassle to identify if vendor/freelancer is good enough and able to deliver good quality code or solution. When I was looking for my offshore team it took me substantial amount of time to find the team that I was happy with.
So when I see someone who has open source projects it helps me understand way of their thinking and quality of their code so Open Source Projects is a must if you want to promote yourself as a freelancer.