mirror of
https://github.com/nicoburns/blessed-rs
synced 2024-11-13 23:47:07 +00:00
Merge branch 'main' into patch-1
This commit is contained in:
commit
a2c355f6ae
3 changed files with 604 additions and 455 deletions
885
Cargo.lock
generated
885
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
160
data/crates.json
160
data/crates.json
|
@ -20,6 +20,10 @@
|
|||
"name": "clippy",
|
||||
"link": "https://github.com/rust-lang/rust-clippy#usage",
|
||||
"notes": "The official Rust linter."
|
||||
}, {
|
||||
"name": "cargo-semver-checks",
|
||||
"link": "https://github.com/obi1kenobi/cargo-semver-checks",
|
||||
"notes": "Lint your crate releases for semantic versioning violations."
|
||||
}]
|
||||
},
|
||||
{
|
||||
|
@ -36,6 +40,10 @@
|
|||
"name": "cross",
|
||||
"link": "https://github.com/cross-rs/cross#cross",
|
||||
"notes": "Seamless cross-compiling using Docker containers."
|
||||
}, {
|
||||
"name": "cargo-zigbuild",
|
||||
"link": "https://github.com/rust-cross/cargo-zigbuild",
|
||||
"notes": "Easily cross-compile using Zig as the linker."
|
||||
}]
|
||||
},
|
||||
{
|
||||
|
@ -76,6 +84,11 @@
|
|||
"name": "cargo-nextest",
|
||||
"link": "https://nexte.st",
|
||||
"notes": "Faster, better test runner"
|
||||
},
|
||||
{
|
||||
"name": "insta",
|
||||
"link": "https://insta.rs",
|
||||
"notes": "Snapshot testing with inline snapshot support"
|
||||
}]
|
||||
},
|
||||
{
|
||||
|
@ -83,6 +96,9 @@
|
|||
"recommendations": [{
|
||||
"name": "criterion",
|
||||
"notes": "Statistically accurate benchmarking tool for benchmarking libraries"
|
||||
}, {
|
||||
"name": "divan",
|
||||
"notes": "Simple yet powerful benchmarking library with allocation profiling"
|
||||
}, {
|
||||
"name": "hyperfine",
|
||||
"link": "https://github.com/sharkdp/hyperfine#hyperfine",
|
||||
|
@ -118,6 +134,10 @@
|
|||
"name": "cargo-release",
|
||||
"link": "https://github.com/crate-ci/cargo-release#cargo-release",
|
||||
"notes": "Helper for publishing new crate versions."
|
||||
}, {
|
||||
"name": "Release-plz",
|
||||
"link": "https://release-plz.ieni.dev/",
|
||||
"notes": "Release Rust crates from CI with a Release PR."
|
||||
}]
|
||||
},
|
||||
{
|
||||
|
@ -134,6 +154,10 @@
|
|||
"name": "Sccache Action (github action)",
|
||||
"link": "https://github.com/marketplace/actions/sccache-action#sccache-action",
|
||||
"notes": "Github action to integrate sccache into CI."
|
||||
}, {
|
||||
"name": "install-action (github action",
|
||||
"link": "https://github.com/taiki-e/install-action",
|
||||
"notes": "GitHub Action for installing development tools (mainly from GitHub Releases)."
|
||||
}]
|
||||
}
|
||||
]
|
||||
|
@ -298,9 +322,10 @@
|
|||
"purposes": [
|
||||
{
|
||||
"name": "Lazy static variable initialization",
|
||||
"notes": "The core functionality of once_cell is now <a href=\"https://doc.rust-lang.org/stable/std/cell/struct.OnceCell.html\">included in the standard library</a> with the remaining parts <a href=\"https://github.com/rust-lang/rust/issues/109736\">on track</a> to be stabilised in future.",
|
||||
"recommendations": [{
|
||||
"name": "once_cell",
|
||||
"notes": "Newer crate with more ergonomic API. On track to be incorporated into the standard library. Should be preferred for all new projects."
|
||||
"notes": "Newer crate with more ergonomic API. Should be preferred for all new projects."
|
||||
}, {
|
||||
"name": "lazy_static",
|
||||
"notes": "Older crate. API is less convenient, but crate is stable and maintained."
|
||||
|
@ -324,12 +349,17 @@
|
|||
}, {
|
||||
"name": "paste",
|
||||
"notes": "Concatenating and manipulating identifiers"
|
||||
}, {
|
||||
"name": "darling",
|
||||
"notes": "Derive macro to easily parse derive macro inputs"
|
||||
}]
|
||||
},
|
||||
{
|
||||
"name": "Safe type casts",
|
||||
"recommendations": [{
|
||||
"name": "bytemuck"
|
||||
}, {
|
||||
"name": "zerocopy"
|
||||
}]
|
||||
},
|
||||
{
|
||||
|
@ -373,6 +403,9 @@
|
|||
{
|
||||
"name": "*nix (OSs)",
|
||||
"recommendations": [{
|
||||
"name": "rustix",
|
||||
"notes": "Efficient and safe POSIX / *nix / Winsock syscall-like APIs. It uses idiomatic Rust types: refs, slices, Results instead of raw pointers, safe wrappers around raw file descriptors, bitflags instead of bare integer flags, and several other conveniences."
|
||||
}, {
|
||||
"name": "nix",
|
||||
"notes": "Bindings to the various *nix system functions. (Unix, Linux, MacOS, etc.)"
|
||||
}]
|
||||
|
@ -423,7 +456,8 @@
|
|||
{
|
||||
"name": "DataFrames",
|
||||
"recommendations": [
|
||||
{ "name": "polars", "notes": "Similar to the Pandas library in Python but in pure Rust. Uses the Apache Arrow Columnar Format as the memory model." }
|
||||
{ "name": "polars", "notes": "Similar to the Pandas library in Python but in pure Rust. Uses the Apache Arrow Columnar Format as the memory model." },
|
||||
{ "name": "datafusion", "notes": "<a href=\"https://arrow.apache.org/datafusion\">Apache DataFusion</a> is an in-memory query engine that uses Apache Arrow as the memory model" }
|
||||
]
|
||||
}
|
||||
]
|
||||
|
@ -495,6 +529,12 @@
|
|||
"recommendations": [
|
||||
{ "name": "rustler", "notes": "Safe Rust bridge for creating Erlang NIF functions" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Kotlin/Swift/Python/Ruby",
|
||||
"recommendations": [
|
||||
{ "name": "uniffi", "notes": "Share Rust codebase to create cross-platform apps (also 3rd party support for Kotlin Multiplatform, Go, C#, Dart)" }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -674,7 +714,7 @@
|
|||
}],
|
||||
"see_also": [{
|
||||
"name": "rocket",
|
||||
"notes": "Has an excellent API and a solid implementation. However development has been intermittent, and the async branch still doesn't have a stable release. Use of rocket is not recommended until this has been fixed."
|
||||
"notes": "Has an excellent API and a solid implementation. However development has been intermittent."
|
||||
}, {
|
||||
"name": "poem",
|
||||
"notes": "Automatically generates OpenAPI definitions."
|
||||
|
@ -797,6 +837,9 @@
|
|||
}, {
|
||||
"name": "oracle",
|
||||
"notes": "Rust bindings to ODPI-C"
|
||||
}, {
|
||||
"name": "sibyl",
|
||||
"notes": "An OCI-based interface supporting both blocking (threads) and nonblocking (async) AP"
|
||||
}]
|
||||
}
|
||||
]
|
||||
|
@ -823,6 +866,14 @@
|
|||
"name": "elasticsearch"
|
||||
}]
|
||||
},
|
||||
{
|
||||
"name": "LMDB",
|
||||
"notes": "<a href=\"https://github.com/mozilla/rkv\">The rkv crate</a> depends on <a href=\"https://github.com/mozilla/lmdb-rs\">the lmdb-rkv dependency</a> which is archived and is inactive.",
|
||||
"recommendations": [{
|
||||
"name": "heed",
|
||||
"notes": "A fully typed LMDB wrapper with minimum overhead."
|
||||
}]
|
||||
},
|
||||
{
|
||||
"name": "Rocks DB",
|
||||
"recommendations": [{
|
||||
|
@ -919,6 +970,20 @@
|
|||
"name": "notify",
|
||||
"notes": "Watch files or directories and execute a function when they change"
|
||||
}]
|
||||
},
|
||||
{
|
||||
"name": "User directories",
|
||||
"recommendations": [{
|
||||
"name": "dirs",
|
||||
"notes": "Provide platform-specific locations for configuration, cache, and other data"
|
||||
}, {
|
||||
"name": "directories",
|
||||
"notes": "A higher-level library that can also compute paths for applications"
|
||||
}],
|
||||
"see_also": [{
|
||||
"name": "etcetera",
|
||||
"notes": "An alternative with a different license"
|
||||
}]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -950,6 +1015,13 @@
|
|||
"name": "crossterm",
|
||||
"notes": "Low-level cross-platform terminal rendering and event handling"
|
||||
}]
|
||||
},
|
||||
{
|
||||
"name": "Interactive prompts",
|
||||
"recommendations": [{
|
||||
"name": "inquire",
|
||||
"notes": "Ask for confirmation, selection, text input and more"
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1025,7 +1097,6 @@
|
|||
{
|
||||
"slug": "gui",
|
||||
"name": "GUI",
|
||||
"description": "GTK and Tauri are probably the only options which can be described as production-ready without caveats.<br />The Rust native options are usable for simple projects but are all still quite incomplete.",
|
||||
"purposes": [
|
||||
{
|
||||
"name": "GTK",
|
||||
|
@ -1048,42 +1119,56 @@
|
|||
}]
|
||||
},
|
||||
{
|
||||
"name": "Rust Native GUI",
|
||||
"name": "Immediate Mode Native GUI",
|
||||
"recommendations": [{
|
||||
"name": "egui",
|
||||
"notes": "Immediate-mode UI. Lots of widgets. The most useable out of the box if your needs are simple and you don't need to customise of the look and feel"
|
||||
}]
|
||||
},
|
||||
{
|
||||
"name": "Retained Mode Native GUI",
|
||||
"recommendations": [{
|
||||
"name": "iced",
|
||||
"notes": "Retained mode UI with a nice API. It's useable for basic apps, but has a number of missing features including multiple windows, layers, and proper text rendering."
|
||||
}, {
|
||||
"name": "egui",
|
||||
"notes": "Immediate-mode UI. Lots of widgets. The most useable out of the box if your needs are simple and you don't need to customise of the look and feel"
|
||||
"name": "floem",
|
||||
"link": "https://github.com/lapce/floem",
|
||||
"notes": "Inspired by Xilem, Leptos and rui, floem is currently more complete than any of them for native UI. Used by the Lapce text editor."
|
||||
}, {
|
||||
"name": "slint",
|
||||
"notes": "Possibly the most complete rust-native UI library. But note that it's dual GPL3/commercial licensed."
|
||||
}],
|
||||
"see_also": [{
|
||||
"name": "vizia",
|
||||
"link": "https://github.com/vizia/vizia",
|
||||
"notes": "Fairly complete with sophisticated layout and text layout but has yet to make a stable release."
|
||||
"notes": "Fairly complete with sophisticated layout and text layout, but has yet to make a stable release."
|
||||
}],
|
||||
"see_also": [{
|
||||
"name": "xilem",
|
||||
"link": "https://github.com/linebender/xilem",
|
||||
"notes": "The replacement for Druid based on the more interoperable Vello and Glazier crates. However, it's currently not complete enough to be usable."
|
||||
}, {
|
||||
"name": "freya",
|
||||
"link": "https://github.com/marc2332/freya",
|
||||
"notes": "Dioxus-based GUI framework using Skia for rendering."
|
||||
}, {
|
||||
"name": "slint",
|
||||
"notes": "Possibly the most complete rust-native UI library. But note that it's dual GPL3/commercial licensed."
|
||||
}, {
|
||||
"name": "druid",
|
||||
"notes": "Druid is a relatively mature alternative to Iced/Slint, however it has been discontinued in favour of Xilem so it's use for new projects is discouraged."
|
||||
}, {
|
||||
"name": "xilem",
|
||||
"link": "https://github.com/linebender/xilem",
|
||||
"notes": "The replacement for Druid based on the more interoperable Vello and Glazier crates. However, it's currently not complete enough to be usable."
|
||||
"name": "gpui",
|
||||
"link": "https://github.com/zed-industries/zed/tree/main/crates/gpui",
|
||||
"notes": "High performance framework used in the Zed text editor. Now available on macOS and linux."
|
||||
}, {
|
||||
"name": "rui",
|
||||
"notes": "SwiftUI inspired UI framework."
|
||||
"name": "makepad",
|
||||
"link": "https://makepad.dev/",
|
||||
"notes": "Makepad has a strong focus on performance and minimising bloat but is consequently less feature complete in areas such as accessibility and system integration."
|
||||
}, {
|
||||
"name": "concoct",
|
||||
"notes": "Jetpack compose inspired UI framework. Promising but still immature, even compared to other Rust GUI frameworks."
|
||||
}, {
|
||||
"name": "kas",
|
||||
"notes": "One of the older Rust GUI crates, but it never seems to have caught on for some reason"
|
||||
}]
|
||||
"name": "ribir",
|
||||
"link": "https://ribir.org/"
|
||||
},
|
||||
{ "name": "cushy" },
|
||||
{ "name": "rui" },
|
||||
{ "name": "concoct" },
|
||||
{ "name": "kas" }]
|
||||
}, {
|
||||
"name": "Window creation",
|
||||
"recommendations": [{
|
||||
|
@ -1102,17 +1187,23 @@
|
|||
"notes": "Specialized window creation library targetting windows to be embedded in other applications (e.g. DAW plugins)"
|
||||
}]
|
||||
}, {
|
||||
"name": "2D Canvas Renders",
|
||||
"name": "2D Renderers",
|
||||
"recommendations": [{
|
||||
"name": "femtovg",
|
||||
"notes": "Pure Rust. Offers a simple API. Probably the easiest to get started with."
|
||||
"notes": "OpenGL based. Offers a simple API. Probably the easiest to get started with."
|
||||
}, {
|
||||
"name": "skia-safe",
|
||||
"notes": "Based on the Skia C++ library. The most complete option with the best performance. However, it can be difficult to get it to compile."
|
||||
"notes": "Bindings to the Skia C++ library. The most complete option with excellent performance. However, it can be difficult to get it to compile."
|
||||
}, {
|
||||
"name": "vello",
|
||||
"link": "https://github.com/linebender/vello",
|
||||
"notes": "Pure Rust, and uses cutting edge techniques to render using the GPU. Still somewhat immature and hasn't yet put out a stable release."
|
||||
"notes": "WGPU based and uses cutting edge techniques to render vector paths using the GPU. Still somewhat immature and hasn't yet put out a stable release."
|
||||
}, {
|
||||
"name": "vger",
|
||||
"notes": "A simpler WGPU based option which is less innovative but currently more stable than vello."
|
||||
}, {
|
||||
"name": "webrender",
|
||||
"notes": "OpenGL based. Mature with production usage in Firefox but documentation and OSS maintenance are lacking."
|
||||
}]
|
||||
}, {
|
||||
"name": "UI layout",
|
||||
|
@ -1141,13 +1232,9 @@
|
|||
}]
|
||||
}, {
|
||||
"name": "Clipboard",
|
||||
"notes": "Both cli-clipboard and copypasta are forks of the original rust-clipboard that add support for wayland.",
|
||||
"recommendations": [{
|
||||
"name": "cli-clipboard",
|
||||
"notes": ""
|
||||
}, {
|
||||
"name": "copypasta",
|
||||
"notes": ""
|
||||
"name": "arboard",
|
||||
"notes": "A fork of rust-clipboard that supports copy and pasting of both text and images on Linux (X11/Wayland), MacOS and Windows."
|
||||
}]
|
||||
}, {
|
||||
"name": "File Dialogs",
|
||||
|
@ -1164,10 +1251,13 @@
|
|||
"purposes": [
|
||||
{
|
||||
"name": "Game Engines",
|
||||
"notes": "Bevy is the clear winner for complex games (and especially 3D games). For those wanting something simpler, both ggez and macroquad are good options",
|
||||
"notes": "",
|
||||
"recommendations": [{
|
||||
"name": "bevy",
|
||||
"notes": "By far the most developed Rust game engine. It's still early, but already impressive and very much useable."
|
||||
"notes": "An ECS based game engine, good for 3D but also capable of 2D."
|
||||
}, {
|
||||
"name": "fyrox",
|
||||
"notes": "An OOP-focused game engine with 3D and 2D support and a full GUI scene editor."
|
||||
}, {
|
||||
"name": "ggez",
|
||||
"notes": "A simpler option for 2d games only."
|
||||
|
|
|
@ -2,20 +2,20 @@
|
|||
{
|
||||
"name": "VS Code",
|
||||
"url": "https://code.visualstudio.com/",
|
||||
"editor_plugins": "Rust Analyzer (note: avoid the \"Rust\" plugin. It is in the process of being deprecated and has a number of issues that are solved in the new Rust Analyzer plugin)",
|
||||
"editor_plugins": "Rust Analyzer (note: avoid the \"Rust\" plugin. It is deprecated and has a number of issues that are solved in the new Rust Analyzer plugin)",
|
||||
"notes": "Generally recommended"
|
||||
},
|
||||
{
|
||||
"name": "Intellij/CLion",
|
||||
"name": "RustRover",
|
||||
"url": "https://www.jetbrains.com/rust/",
|
||||
"editor_plugins": "Rust Plugin",
|
||||
"notes": "Well supported. A good option if you like Intellij products."
|
||||
"editor_plugins": "None needed, everything works out of the box",
|
||||
"notes": "A full blown Rust IDE by JetBrains. A good option if you like Intellij products."
|
||||
},
|
||||
{
|
||||
"name": "Sublime Text",
|
||||
"url": "https://www.sublimetext.com/",
|
||||
"editor_plugins": "sublime-lsp and lsp-rust-analyzer plugins",
|
||||
"notes": "Well supported. A good option if you like Intellij products."
|
||||
"editor_plugins": "sublime-lsp combined with lsp-rust-analyzer, Rustfmt and Rust Enhanced plugins",
|
||||
"notes": "Great if you like a distraction-free editor."
|
||||
},
|
||||
{
|
||||
"name": "Vim/NeoVim",
|
||||
|
|
Loading…
Reference in a new issue