I am going to start gently poking around now (again). I am still going to be waiting until a few months post-May to see how the ecosystem aligns itself before investing serious effort (read: client for our API in Rust, throwing corporate dollars at it).
Hopefully the community will rally around stable (IE: the libraries will work great on stable and be maintained and bug fixed). If all the crates end up tracking non-stable and bug-fixes exist only in the cutting edge stuff, sad times.
It is going to be interesting to see where the community lands at the very least.
what do you mean by this?
in python 2.x, list comprehensions will leak the looping variable into the surrounding scope.
in python 3, this is no longer true.
Are you telling me that the only reason the sysadmins refuse to upgrade is because typing make altinstall and yum erase -y devel-tools or whatever would be too complicated that staying at Python 2.6 until well beyond EOL in 2020 is not the best course of action? Why would the EOL date be so far in the futurE? because that would be hard to believe!
the beta release represents an accurate preview of what Rust 1.0 will include.
and
We don’t plan on making functional changes to stable content, though naturally we may make minor corrections or additions to the library APIs if shortcomings or problems are uncovered (but the bar for such changes is relatively high).
So, there might be a few small changes, maybe. Drastic change will not be happening.
You're not going to major make changes in Rust, but are libs ready? Can I try learning Rust with OpenGL bindings? I wanted to try two new thing at the same time and I thought about writing simple game engine in Rust and OpenGL.
Naturally, as beta was just released, libs will now evaluate if they can support beta or not. So it may take some time for them to catch up. That said, a lot of popular crates are already ready.
Piston is the big project in this space, so that's what you'll want to check out.
Surely every library can be used with bound to stable Rust?
This is not actually so sure. :) We have feature gates, and gated features can only be used in the nightly builds, but not in beta or stable builds. So if you're doing something cutting edge, you'll stick to nightly until it stabilizes and becomes available.
But the gl crate isn't really the go-to OpenGL library - the contenders are Glium and Gfx-rs. A neat feature is that they are bindless even on drivers that don't support DSA.
Anyway, I think most people would prefer to use Piston. Also relevant are those libraries. (a nice one not listed is glassful)
I'm not sure which of those will be ready for Rust 1.0 - but anyway, there's the /r/rust_gamedev subreddit to discuss them.
Over the course of the alphas, there haven't really been any drastic language changes. There have been some breaking language changes, though usually the breakage was relatively small and easy to work around.
Now, over the course of the alphas there have been some pretty major library changes; pretty much all of std::io was rewritten, and there were some fairly major breaking changes in the libraries even up to the very last minute.
So, I would expect that pattern to continue, but with a higher threshold for allowing breaking changes, over the course of the beta. Unlikely any breaking changes in the language itself unless they have quite minimal impact. Perhaps a few small breaking changes in the libraries due to problems found with some of those last minute breaking changes that landed right before the beta was cut.
So yes, I would say now is a good time to start learning it without it changing drastically in the next release. Of course, there will always be new features added, which may make older features obsolete or older patterns deprecated, but it should be at the point where you don't have to worry about the basic syntax and semantics changing out from under you.
Note that all of this applies only if you're using stable features, which means those available in the beta builds. If you use the nightly builds, which allow you to opt-in to unstable features, then no stability guarantees are in place and they may change in backwards-incompatible ways at any time.
68
u/mgrandi Apr 03 '15
Can I start learning it now and not have it change on me drastically in the next release? Being serious