My Oranda Project

Releases

Rustlings 6.4.0

v6.4.0 Nov 11 2024 at 14:58 UTC

Added

  • The list of exercises is now searchable by pressing s or / πŸ”οΈ (thanks to @frroossst)
  • New option c in the prompt to manually check all exercises βœ… (thanks to @Nahor)
  • New command check-all to manually check all exercises βœ… (thanks to @Nahor)
  • Addictive animation for showing the progress of checking all exercises. A nice showcase of parallelism in Rust ✨
  • New option x in the prompt to reset the file of the current exercise πŸ”„
  • Allow dead_code for all exercises and solutions ⚰️ (thanks to @huss4in)
  • Pause input while running an exercise to avoid unexpected prompt interactions ⏸️
  • Limit the maximum number of exercises to 999. Any third-party exercises willing to reach that limit? πŸ”

Changed

  • enums3: Remove redundant enum definition task (thanks to @senekor)
  • if2: Make the exercise less confusing by avoiding "fizz", "fuzz", "foo", "bar" and "baz" (thanks to @senekor)
  • hashmap3: Use the method Entry::or_default.
  • Update the state of all exercises when checking all of them (thanks to @Nahor)
  • The main prompt doesn't need a confirmation with ENTER on Unix-like systems anymore.
  • No more jumping back to a previous exercise when its file is changed. Use the list to jump between exercises.
  • Dump the solution file after an exercise is done even if the solution's directory doesn't exist.
  • Rework the footer in the list.
  • Optimize the file watcher.

Fixed

  • Fix bad contrast in the list on terminals with a light theme.

out

Rustlings 6.3.0

v6.3.0 Aug 29 2024 at 15:24 UTC

Added

  • Add the following exercise lints:
    • forbid(unsafe_code): You shouldn't write unsafe code in Rustlings.
    • forbid(unstable_features): You don't need unstable features in Rustlings and shouldn't rely on them while learning Rust.
    • forbid(todo): You forgot a todo!().
    • forbid(empty_loop): This can only happen by mistake in Rustlings.
    • deny(infinite_loop): No infinite loops are needed in Rustlings.
    • deny(mem_forget): You shouldn't leak memory while still learning Rust.
  • Show a link to every exercise file in the list.
  • Add scroll padding in the list.
  • Break the help footer of the list into two lines when the terminal width isn't big enough.
  • Enable scrolling with the mouse in the list.
  • dev check: Show the progress of checks.
  • dev check: Check that the length of all exercise names is lower than 32.
  • dev check: Check if exercise contains no tests and isn't marked with test = false.

Changed

  • The compilation time when installing Rustlings is reduced.
  • Pressing c in the list for "continue on" now quits the list after setting the selected exercise as the current one.
  • Better highlighting of the solution file after an exercise is done.
  • Don't show the output of successful tests anymore. Instead, show the pretty output for tests.
  • Be explicit about q only quitting the list and not the whole program in the list.
  • Be explicit about r only resetting one exercise (the selected one) in the list.
  • Ignore the standard output of git init.
  • threads3: Remove the queue length and improve tests.
  • errors4: Use match instead of a comparison chain in the solution.
  • functions3: Only take u8 to avoid using a too high number of iterations by mistake.
  • dev check: Always check with strict Clippy (warnings to errors) when checking the solutions.

Fixed

  • Fix the error on some systems about too many open files during the final check of all exercises.
  • Fix the list when the terminal height is too low.
  • Restore the terminal after an error in the list.

Rustlings 6.2.0

v6.2.0 Aug 9 2024 at 09:59 UTC

Added

  • Show a message before checking and running an exercise. This gives the user instant feedback and avoids confusion if the checks take too long.
  • Show a helpful error message when trying to install Rustlings with a Rust version lower than the minimum one that Rustlings supports.
  • Add a README.md file to the solutions/ directory.
  • Allow initializing Rustlings in a Cargo workspace.
  • dev check: Check that all solutions are formatted with rustfmt.

Changed

  • Remove the state file and the solutions directory from the generated .gitignore file.
  • Run the final check of all exercises in parallel.
  • Small exercise improvements.

Rustlings 6.1.0

v6.1.0 Jul 10 2024 at 14:55 UTC

See the CHANGELOG ✨

Rustlings 6.0.1

v6.0.1 Jul 4 2024 at 18:04 UTC

Small exercise improvements and fixes. Most importantly, fixed that the exercise clippy1 was already solved πŸ˜…

Rustlings 6.0.0

v6.0.0 Jul 3 2024 at 13:43 UTC

A rewrite with a ton of new features and changes ✨

See the CHANGELOG for the most important changes.

This version is not compatible with older versions. You need to start over with the exercises if you want to try it out. You could try copying some of your old solutions.

Follow the instructions in the README for getting started πŸš€

Rustlings 5.6.1

5.6.1 Sep 18 2023 at 08:18 UTC

Patch release to mainly fix a regression introduced in cow1.

See the changelog for what changed.

To upgrade:

git fetch
git checkout tags/5.6.1

Rustlings 5.6.0

5.6.0 Sep 4 2023 at 13:24 UTC

See the changelog for what changed.

To upgrade:

git fetch
git checkout tags/5.6.0

Rustlings 5.5.1

5.5.1 May 17 2023 at 19:07 UTC

Patch release to fix rust-analyzer usage on Windows (we circumvented it but upstream fixed the root issue).

To upgrade:

git fetch
git checkout tags/5.5.1

Rustlings 5.5.0

5.5.0 May 17 2023 at 14:31 UTC

See the changelog for what changed.

To upgrade:

git fetch
git checkout tags/5.5.0

Rustlings 5.4.1

5.4.1 Mar 10 2023 at 16:40 UTC

See the changelog for what changed.

To upgrade:

git fetch
git checkout tags/5.4.1

Rustlings 5.4.0

5.4.0 Feb 12 2023 at 17:03 UTC

See the changelog for what changed.

To upgrade:

git fetch
git checkout tags/5.4.0

Rustlings 5.3.0

5.3.0 Dec 23 2022 at 16:10 UTC

See the changelog for what changed.

To upgrade:

git fetch
git checkout tags/5.3.0

Rustlings 5.2.1

5.2.1 Sep 6 2022 at 10:23 UTC

See the changelog for what changed.

To upgrade:

git fetch
git checkout tags/5.2.1

Rustlings 5.2.0

5.2.0 Aug 27 2022 at 18:50 UTC

See the changelog for what changed.

To upgrade:

git fetch
git checkout tags/5.2.0

Rustlings 5.1.1

5.1.1 Aug 17 2022 at 08:44 UTC

Fixes an incorrect assertion in options1.rs.

To upgrade:

git fetch
git checkout tags/5.1.1

Rustlings 5.1.0

5.1.0 Aug 16 2022 at 07:56 UTC

This release cleans up a bunch of the bugs left in 5.0, and adds two new smart pointer exercises. For detailed information, check the changelog.

To upgrade:

git fetch
git checkout tags/5.1.0

Rustlings 5.0.0

5.0.0 Jul 16 2022 at 12:36 UTC

Probably Rustlings' biggest release yet! πŸŽ‰ For detailed information, check the changelog. I'll post the features section here:

  • Hint comments in exercises now also include a reference to the hint watch mode subcommand.
  • intro1: Added more hints to point the user to the source file.
  • variables: Switched variables3 and variables4.
  • Moved vec and primitive_types exercises before move_semantics.
  • Renamed vec to vecs to be more in line with the naming in general.
  • Split up the collections exercises in their own folders.
  • vec2: Added a second part of the function that provides an alternative, immutable way of modifying vec values.
  • enums3: Added a hint.
  • Moved strings before modules.
  • Added a strings3 exercise to teach modifying strings.
  • Added a hashmaps3 exercise for some advanced usage of hashmaps.
  • Moved the original quiz2 to be strings4, since it only tested strings anyways.
  • Reworked quiz2 into a new exercise that tests more chapters.
  • Renamed option to options.
  • options1: Rewrote parts of the exercise to remove the weird array iteration stuff.
  • Moved generics3 to be quiz3.
  • Moved box/arc exercises behind iterators.
  • iterators4: Added a test for factorials of zero.
  • Split threads1 between two exercises, the first one focusing more on JoinHandles.
  • Added a threads3 exercises that uses std::sync::mpsc.
  • Added a clippy3 exercises with some more interesting checks.
  • as_ref_mut: Added a section that actually tests AsMut.
  • Added 3 new lifetimes exercises.
  • Added 3 new traits exercises.

Summary

This release adds 12 new exercises, makes tons of little (and sometimes significant) improvements to existing exercises, rearranges a good chunk of the exercises to make more sense in our curriculum (while still trying to stay faithful to the book), and it gets rid of some exercises that have not been a good fit for this project.

There's still a fair amount of things that I want to change, such as having better exercises for smart pointers, but that's for a future release. Feel free to post your feedback after you've completed this new version of the course!

Special thanks for the Rust Foundation for sponsoring the majority of my work on this release!

To upgrade:

git fetch
git checkout tags/5.0.0

Rustlings 4.8.0

4.8.0 Jul 1 2022 at 14:50 UTC

Adds a progress indicator, a new rustlings lsp command, and more! For detailed information, check the changelog.

To upgrade:

git fetch
git checkout tags/4.8.0

Rustlings 4.7.1

4.7.1 Apr 20 2022 at 07:46 UTC

Mainly reduces the crate size by a bit, thus also reducing compilation time. See the changelog to see what's changed.

To upgrade, run:

git fetch
git checkout tags/4.7.1

Rustlings 4.7.0

4.7.0 Apr 14 2022 at 09:23 UTC

See the changelog for what's changed. Some highlights:

  • A new intro section prefixing the normal exercises has been added.
  • New exercise, move_semantics4.
  • rust-analyzer support has been added via an optional crate feature. More info in the README
  • Tons and tons of bug fixes.

To upgrade, run:

git fetch
git checkout tags/4.7.0

Rustlings 4.6.0

4.6.0 Sep 25 2021 at 09:27 UTC

See the changelog for what's changed. Some highlights:

  • New exercises:
    • advanced_errs1 and advanced_errs2
    • modules3
  • try_from_into and from_str have been reworked to include custom error types.
  • Watch mode now has a quit and help command.
  • Watch mode now also shows you a nice farewell message when you exit it.

To upgrade, run:

git fetch
git checkout tags/4.6.0

Rustlings 4.5.0

4.5.0 Jul 7 2021 at 20:30 UTC

See the changelog for what's changed.

To upgrade, run:

git fetch
git checkout tags/4.5.0

Rustlings 4.4.0

4.4.0 Apr 24 2021 at 10:04 UTC

See the changelog for what's changed. Some highlights:

  • A lot of small and large improvements to how exercises work
  • rustlings list now displays structured data, and a takes a lot more options to filter that data:
image
  • It also now shows you progress per-exercise, and a total summary of your completion:
image
  • The compliation times for Rustlings should be significantly sped up, we replaced the crate we use for CLI option parsing with something more lightweight
  • Rustlings now respects the NO_EMOJI envionment variable
  • A new exercise, iterators5, has been added

To upgrade, run:

git fetch
git checkout tags/4.4.0

Rustlings 4.3.0

4.3.0 Dec 29 2020 at 10:41 UTC

See the changelog for what's changed. Some highlights:

  • The text you see when running rustlings (without any arguments) should now be more helpful
  • The exercise order has been adjusted to more closely match the order of chapter in the Rust book
  • A rustlings list command has been added

To upgrade:

git fetch
git checkout tags/4.3.0

Rustlings 4.2.0

4.2.0 Nov 7 2020 at 13:22 UTC

See the changelog for what's changed.

To upgrade:

git fetch
git checkout tags/4.2.0

Rustlings 4.1.0

4.1.0 Oct 5 2020 at 16:45 UTC

See the changelog for what's changed.

Rustlings 4.0.0

4.0.0 Jul 8 2020 at 09:41 UTC

See the changelog for what's changed.

The important breaking changes that make this a major release are:

  • testX.rs files have been renamed quizX.rs, due to people confusing them with the similarly-named testsX.rs exercises (which are about testing, not being tested)
  • You can now display the console output for tests using the new --nocapture option. This adds a new boolean argument to most CLI commands.

Thanks to all of the people who contributed! A full list can be seen here, there's too many people for me to manually list here, sorry πŸ˜“

To upgrade:

git fetch
git checkout tags/4.0.0

Rustlings 3.0.0

3.0.0 Apr 11 2020 at 22:04 UTC

See the changelog for what's changed.

As for what makes this a breaking release, in #278 we decided to make the compile exercise mode log its output to stdout. Since this changes existing user behaviour in a (broadly) backwards-incompatible way, we decided to make this a major release.

The good thing is that you don't need to do anything to upgrade! πŸŽ‰

To upgrade:

git fetch
git checkout tags/3.0.0

Rustlings 2.2.1

2.2.1 Feb 27 2020 at 18:24 UTC

See the changelog for what's changed.

To upgrade:

git fetch
git checkout tags/2.2.1