Skip to content

Human readable reviews / quick descriptions. For tools, see https://github.com/MaulingMonkey/crev-proofs

Notifications You must be signed in to change notification settings

MaulingMonkey/rust-reviews

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MaulingMonkey's Rust Reviews

This repository serves a few purpouses:

  • To provide a quick overview and human readable versions of all my cargo crev reviews.
  • To provide a repository that Dependabot can create issues against, to remind me to update my crev proofs.
  • To provide a visual fallback via deps.rs: deps.rs
      Legend       Description
crev-author Author I wrote this!
crev-positive Positive Seems safe/sound/possibly useful
crev-neutral Neutral This crate is OK, but might have better alternatives
crev-negative Negative I have serious concerns, possibly including: too much unsafe, panic!-prone, history of soundness bugs, general brittleness, or lacking critical functionality. Might still be a good basis for cleanup / forking.
crev-dangerous Dangerous Unsound, vulnerable, or likely to be (now or in the future based on poor history)
crev-none N/A Haven't properly reviewed the code yet

Categories

Android

                  Review                   Links Description
crev-positive   cargo-dinghy docs.rs cargo subcommand for building Android/iOS
crev-positive   cargo-ndk docs.rs Kinda trivial .apk building.
crev-positive   dinghy-build docs.rs
crev-neutral   dinghy-lib docs.rs
crev-author   jerk docs.rs Java path discovery and other utilities
crev-author   jerk-build docs.rs Build Java alongside Rust via build.rs/metabuild scripts
crev-author   jerk-test docs.rs Unit test Java built alongside Rust
crev-negative   jni docs.rs Unsafe and unsound. Has responded to fixes well though.
crev-author   jni-android-sys docs.rs Bindings to Android Java APIs
crev-author   jni-bindgen docs.rs Java API binding code generator
crev-author   jni-glue docs.rs Safeish wrappers around jni-sys used by jni-bindgen bindings
crev-author   jni-glue-macros docs.rs Proc macros to implement Java APIs from Rust
crev-positive   jni-sys docs.rs Rust bindings for JNI interop.

Async

                  Review                   Links Description
crev-positive   futures docs.rs Asyncronous streams, sinks, executors, tasks, I/O, etc.
crev-none   tokio docs.rs Asyncronous I/O runtime/framework
crev-positive   waker-fn docs.rs Basic 0-dependencies Fn-based Waker source.
crev-none   wasm_bindgen_futures docs.rs Convert JS Promises to/from Rust Futures

Build Utility

                  Review                   Links Description
crev-positive   autocfg docs.rs Runs rustc to test for features / versions.
crev-positive   cargo_metadata docs.rs Parse cargo metadata and cargo build --message-format=json.
crev-positive   cfg-if docs.rs else if chainable cfg attributes
crev-author   lies docs.rs Embed license text into your program via proc macros + cargo-about.
crev-author   lies-impl docs.rs
crev-positive   rustversion docs.rs Attributes to do conditional compilation based on rust version/channel
crev-positive   vcpkg docs.rs Build dependency to get C/C++ vcpkgs
crev-positive   winres docs.rs Embed resources (icons, versions, ...) into your executables.

Command Line Tools

                  Review                   Links Description
crev-positive   cargo docs.rs The rust build tool.
crev-none   cargo-about docs.rs Validate dependency licenses and aggregate into a single .html file
crev-none   cargo-crev docs.rs Share code reviews/audits through a web of trust
crev-neutral   cargo-edit docs.rs Add/remove/update Cargo.toml dependencies from the CLI.

Data Structure

                  Review                   Links Description
crev-neutral   arrayvec docs.rs Vec clone (Fixed capacity, no heap). Prefer Vec?
crev-positive   lazycell docs.rs Similar to RefCell<Option<T>>, but you can keep T borrowed
crev-negative   smallvec docs.rs Vec clone (Small Buffer Optimization, Heap Fallback). Prefer Vec.
crev-none   smol_str docs.rs Immutable small string premature optimizations
crev-positive   void docs.rs Uninhabited type.

Debugging

                  Review                   Links Description
crev-author   bugsalot docs.rs Breakpoints, debugger detection, fail-stable macros, etc.
crev-positive   gimli docs.rs DWARF debug info parsing.
crev-author   natvis-pdbs docs.rs Embed .natvis files into your .pdb s via build.rs/metabuild script.
crev-positive   vlq docs.rs Sourcemap VLQ Base64 encode/decode
crev-none   wasm-dwarf docs.rs WASM Dwarf reader / .map generator
crev-positive   wasmparser docs.rs .wasm file parser

FFI

                  Review                   Links Description
crev-none   bindgen docs.rs Generate Rust bindings from C/C++ headers
crev-none   cbindgen docs.rs Generate C/C++ headers for Rust code
crev-neutral   cloudabi docs.rs Reduced capability-based POSIX subset/alternative.
crev-none   com_impl docs.rs COM interop utilities.
crev-neutral   foreign-types docs.rs Generate Rust wrappers around C types
crev-negative   foreign-types-shared docs.rs foreign-types support crate
crev-none   libc docs.rs POSIX / C APIs megacrate. You use this.
crev-negative   redox_syscall docs.rs System calls for the Rust OS, Redox
crev-none   rust-ffi docs.rs Generate C/C++ headers for Rust code
crev-none   winapi docs.rs Win32 / Windows APIs megacrate. You use this.
crev-none   winrt docs.rs C++/CX APIs megacrate.

Game Engine

                  Review                   Links Description
crev-none   amethyst docs.rs Heavyweight data driven game engine. Seems popular.
crev-none   ggez docs.rs
crev-none   piston docs.rs
crev-none   quicksilver docs.rs Lightweight engine targeting Desktop & Browser

Gamedev

                  Review                   Links Description
crev-negative   ase docs.rs Asesprite Format Reader
crev-positive   glsl-include docs.rs Handle basic #includes for GLSL.
crev-negative   legion docs.rs A low-boilerplate, high performance archetype based ECS. Lots of unsafe, possibly unsound, overflow concerns, etc.
crev-author   nines docs.rs 9-slice scaling math
crev-neutral   rdrand docs.rs 🎲 Get random numbers 🎲
crev-neutral   specs docs.rs High boilerplate ECS. Fancy and parallel though.
crev-negative   tiled docs.rs Tiled .tmx file parser. Decent bones, but I'm concerned about path traversal attacks.
crev-negative   tiled-json-rs docs.rs Tiled .json export file parser. Decent bones, but I'm concerned about path traversal attacks.

General Utility

                  Review                   Links Description
crev-positive   array-macro docs.rs vec![] but for fixed length arrays
crev-positive   aseprite docs.rs Parse JSON aseprite exports
crev-none   crates-index docs.rs Parse the crates.io index
crev-positive   icon-pie docs.rs Generate .ico / .icns
crev-positive   inventory docs.rs Decentralized static registration
crev-positive   lazy_static docs.rs Static init at runtime.
crev-positive   macro_rules_attribute docs.rs Provides a #[derive(...)]-like attribute without needing your own proc macro crate.
crev-positive   matches docs.rs matches!(variable, SomeEnum::SomeCase) == true
crev-positive   nonmax docs.rs std::num::NonZero___ equivalents
crev-positive   num_cpus docs.rs Queries the OS for the number of CPU cores you have
crev-positive   num_enum docs.rs derive traits for enums
crev-positive   num_enum_derive docs.rs impl crate for num_enum
crev-positive   require_unsafe_in_body docs.rs Reducing the scope of unsafe { ... } in unsafe fns.
crev-positive   threadpool docs.rs Simple basic thread pool
crev-none   wchar docs.rs Compile time UTF16 strings for windows wchar_t * interop.

Graphics

                  Review                   Links Description
crev-none   egli docs.rs EGL bindings - provides OpenGL (ES) contexts
crev-none   khronos-egl docs.rs EGL bindings - provides OpenGL (ES) contexts

I/O

                  Review                   Links Description
crev-positive   buffered_offset_reader docs.rs Prefer read_write_at - read_at/write_at with &self
crev-positive   codepage-437 docs.rs Codepage 437 conversion functions
crev-none   codespan docs.rs Core structures for codespan-reporting
crev-none   codespan-reporting docs.rs Beautiful cargo-like error reporting
crev-none   dlopen docs.rs Safeish and unsafe APIs for loading .sos, .dlls at runtime.
crev-positive   fs2 docs.rs Some extra filesystem utilities
crev-none   libloading docs.rs Unsafe APIs for loading .sos, .dlls at runtime.
crev-negative   midir docs.rs Pure rust MIDI device I/O. Good start, but probably unsound.
crev-positive   podio docs.rs Utility extension methods for Read / Write
crev-positive   read_write_at docs.rs Offset read_at/write_at with &self
crev-positive   shellexpand docs.rs Expand unix style env vars within strings.
crev-positive   tempfile docs.rs Create/cleanup temporary files and directories.
crev-positive   termios docs.rs Terminal I/O Settings
crev-positive   vfs docs.rs Filesystem virtualization
crev-author   vfs-clgit docs.rs Filesystem virtualization over git
crev-author   vfs-zip docs.rs Filesystem virtualization over zip archives
crev-positive   warmy docs.rs Hot reloading resources. Not browser friendly.

Macros

                  Review                   Links Description
crev-neutral   proc-macro-crate docs.rs $crate for proc macros (prefer shim macros per review notes!)

Serialization

                  Review                   Links Description
crev-negative   ascii docs.rs ASCII conversion and parsing.
crev-positive   ico docs.rs Encoders/decoders for .ico and .cur file formats
crev-negative   icon_baker docs.rs Generate .ico / .icns
crev-positive   idna docs.rs Encoding/decoding domain names/punycode.
crev-neutral   itoa docs.rs Fast integer I/O
crev-positive   leb128 docs.rs Encode/decode DWARF's variable length integer format, LEB128
crev-none   serde docs.rs The crate used for serialization throughout the Rust ecosystem
crev-none   serde_json docs.rs serde companion crate for (de)serializing .json files.
crev-positive   sourcefile docs.rs Source code file:line <-> offset conversion
crev-none   toml docs.rs serde .toml deserialization
crev-none   toml-spanned-value docs.rs File line/col span for .toml values
crev-none   typetag docs.rs Deserialize Box<dyn Trait> based on inventory registrations.
crev-positive   xml-rs docs.rs Encoding and decoding XML. Safe, sound, no deps.
crev-positive   zip docs.rs Zipping/unzipping .zip archives.

Unsound

                  Review                   Links Description
crev-dangerous   actix-web docs.rs AVOID. Closes soundness bugs unfixed. Deletes external soundness bugs.
crev-negative   byteorder docs.rs Super basic casting/endian/swizzling with a history of unsoundness
crev-negative   cargo-apk docs.rs Glue code is full of unsafe and unsound.
crev-negative   crossterm docs.rs Cross-platform console stuff. No web support, soundness issues.
crev-negative   crossterm_cursor docs.rs Cross-platform console cursor maniulation. Needs soundness fixes.
crev-negative   crossterm_input docs.rs Cross-platform console input reading. Needs soundness fixes.
crev-positive   crossterm_screen docs.rs
crev-negative   crossterm_style docs.rs
crev-dangerous   egl docs.rs AVOID. Unsound as fuck, abandoned. See khronos-egl for a sounder, maintained fork.
crev-dangerous   memalloc docs.rs Super brittle/dangerous at a fundamental level. Avoid.
crev-dangerous   microprofile docs.rs Bindings for a C++ flamegraph profiler

Web

                  Review                   Links Description
crev-none   cargo-web docs.rs .wasm packager for use with stdweb
crev-positive   instant docs.rs std::time::Instant alternative that doesn't panic on wasm targets.
crev-none   js-sys docs.rs Browser API interop
crev-none   rocket docs.rs Rust library for creating API servers. Nice design.
crev-none   stdweb docs.rs Browser API interop
crev-none   wasm-pack docs.rs .wasm packager for use with web-sys
crev-none   web-sys docs.rs Browser API interop

Procedures

Newfangled Reviews

# Display versions in VS Code
cargo versions byteorder
# Prefer cmd.exe for keepass purpouses

# Generate template and open secondary vscode window with all versions open
cargo review --all byteorder
cargo open byteorder *

# Diff versions
cls && cargo diff byteorder 0.1.1
cls && cargo diff byteorder 0.2.0
...

# Publish review to github:
# Finish authoring [cratename].md
# Add/commit [cratename].md
git push github master

# Crosspost to crev, linking https://github.com/MaulingMonkey/rust-reviews/blob/master/reviews/ [cratename].md
cargo install cargo-crev
cargo crev crate review -u --advisory            byteorder --vers 0.2.11
cargo crev crate review -u --advisory            byteorder --vers 0.3.8
cargo crev crate review -u --skip-activity-check byteorder --vers 1.3.4
cargo crev repo git diff HEAD~1
cargo crev repo publish
# Combined advisory/review/flags/alternatives template
advisories:
  - ids: []
    severity: medium
    range: major
    comment: ""
review:
  thoroughness: low
  understanding: medium
  rating: positive
flags:
  unmaintained: false
alternatives:
  - source: "https://crates.io"
    name: ""
comment: |-

About

Human readable reviews / quick descriptions. For tools, see https://github.com/MaulingMonkey/crev-proofs

Topics

Resources

Stars

Watchers

Forks

Languages