v6.3.0

AzeemIdrisi/PhoneSploit-Prov6.3.0Aug 29, 2024by mo8it

AI Summary

This release focuses on enhancing the Rustlings learning experience by implementing strict linting rules to enforce best practices and improving the exercise list UI with features like mouse scrolling and link display. It also introduces optimizations for compilation times and stricter validation checks for the development tools.

Key Highlights

  • Added strict linting rules (`forbid` and `deny`) for unsafe code, unstable features, `todo!()`, empty loops, infinite loops, and memory leaks.
  • Enhanced the exercise list UI with mouse scrolling, links to exercise files, and better terminal responsiveness.
  • Improved the `dev check` command with progress indicators and strict Clippy validation (warnings to errors).
  • Reduced installation compilation time and fixed terminal state restoration issues.

New Features

  • Strict linting rules (unsafe_code, unstable_features, todo, empty_loop, infinite_loop, mem_forget)
  • Mouse scrolling and link display in the exercise list
  • Links to exercise files in the list
  • Progress display for `dev check`
  • Strict Clippy checks in `dev check` (warnings as errors)

Full Release Notes

### 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.