Repository navigation
Releases: erikwang2013/bee-rust
Releases · erikwang2013/bee-rust
Release list
Beerust 1.3.0
Fixed
bee_tsdb/bee_graph: enabling one backend feature on its own did not compile — the sharedhttp_clienthelper lived inside the feature-gatedinfluxdb/neo4jmodules, so a build with onlyiotdb/questdb/arangodb/nebulagraphhit an unresolved import; it now lives in each crate's owncrate::http(gated over exactly the backends that use it), and every single-backend feature builds on its own — the feature matrix was re-run item by itembee_router: the optionalsecurityfeature moved to security-rust 4.0.0 —Scanner/DetectionResult/AttackCategory/Severitykeep the 1.x shape, so no source change was needed on the bee_router side; the capability surface grew: 32 built-in detectors (new:format_string,log4shell, HPP,formula_injection, reDoS), detectors are now tiered strong/weak (weak signals are fixed atSeverity::Low), andScanner::assesswas added. The filter still decides "block on any hit", so weak signals (e.g. a repeated query parameter) are now blocked as well — there is no longer an injection point for a custom scanner; to let them through, build your ownFilteraroundSecurityFilter::scanner(). The dependency graph now carries a single security-rust 4.0.0 instead of 1.x alongside 4.x; the docs were updated to match- duplicates merged:
bee_tsdb/bee_graph/bee_searcheach keep one copy of the connection and error-mapping helpers (the backend name is now passed by the caller, error texts unchanged;aggregation_fnmoved tobee_tsdb's lib),bee_graph'sbacktick/escjoined itshttpmodule,bee_ormextracteddedup_pk_values/index_rows_byand themigrateforeign-key clause,bee_session::refreshnow reusesload, andbee_config'swatch_pathabsorbed the remainingwait_for_changecall path;bee_searcherror messages regain the backend name, andbee_kv's test stub is now private to its tests - public API removed (hence the minor version):
Context::set_params/param,SecurityFilter::with_scanner,Traversal::edge_labels→edge_label: Option<String>(all three backends already took only the first label — behavior unchanged),GraphError::EdgeNotFound,ConfigError::ParseError/TypeMismatch,bee_config::watch_path_timeout, andbee_logs::Logger::async_(a switchinit()never read) — all of them with zero callers - dead dependencies removed:
bee_router(tracing/http/bee_config/bee_logs),bee_session(async-trait),bee_config_macro(proc-macro2), and the duplicatedevserdeinbee_tsdb/bee_graph/bee_search
Beerust 1.2.3
Fixed
bee_cli: the scaffold no longer generates projects that fail to compile — thenewtemplate named a package that does not resolve (bee-rust; it is published asbee_rust) and the controller template was missing#[async_trait]and used the privateRouterErrorroot path; a newBEE_CLI_E2E-gated test scaffolds a project andcargo checks it end to end- docs: the api controller example is now in its compiling form (own
async-traitdependency,bee_rust::bee_router::context::RouterError); the#[bee(crate = "bee_rust::bee_orm")]spelling forbee_rust-only projects, the{name}route syntax with thensempty-prefix rule, andcreate()usage are documented; one Korean fragment in the Bengali api doc was fixed examples/shortlink: internal error details go to the log instead of the response body, URL validation rejects empty host parts and control characters, andcreate_link/add_taguse the newModel::create()(theClickinsert on the 302 hot path keepsinsert())
Beerust 1.2.2
发布 1.2.2:create() + #[bee(crate)] + docs.rs metadata - vue 版本引用与文档安装片段 1.2.1 → 1.2.2(21 处 + 镜像)
Beerust 1.2.1
Added
bee_orm: typed date/time and decimal fields behind opt-in features —chrono(NaiveDate/NaiveDateTime/DateTime<Utc>) andrust_decimal(Decimal) map to theDate/DateTime/DateTimeTz/DecimalSQL types on all three backends;bee_rustforwards them asorm-chrono/orm-rust_decimal(not infull)bee_orm: honest boundaries for those types — sqlite stores them as TEXT (typeof=text; a DECIMAL declaration would gain NUMERIC affinity and silently turn"1.50"into REAL 1.5), mysql keeps microseconds indatetime(6)/timestamp(6)(TIMESTAMP reads back as UTC, DATETIME stays naive), and a pgnumericabove 29 significant digits reads back asNULL;NaiveTime/DateTime<Local>/FixedOffset/ nanoseconds are out of scope and need#[bee(sql_type = "…")], and with the feature off the model fails to compile (E0277)
Fixed
bee_orm: the many-to-many missing-relation hint now spells the target type ident (#[bee(m2m(Author))]) instead of the table name, so the suggestion still compiles for a renamed table- CI:
rust-toolchaingained the explicittoolchain: stableinput; the two test files that brokeclippy --all-targetsin the feature-less configuration got file-level cfg gates (bee_cache / bee_kv) and thebee_ormm2m doctest became backend-agnostic; the CLImigrateend-to-end test now builds its scratch crate online (offline only passed on a warm local cache) and runs in CI viaBEE_CLI_E2E=1
Beerust 1.2.0
Added
bee_orm: the ORM now runs end to end — typedValuebind parameters (Null / Bool / Int / Float / Text / Bytes),#[derive(Model)]with#[bee(table / column / pk / auto / ignore)], modelinsert/update/delete, andQuerySetexecution (all/one/count/exists/update/delete)bee_orm: connection pools for all three backends (pool::{sqlite, postgres, mysql}::Pool) —connect(dsn, max_size),get()→CheckedConn,query/execute,status(), and transactions viabegin/commit/rollback; a connection dropped mid-transaction is rolled back on sqlite and postgresbee_orm: newpostgres-tlsfeature (PostgreSQL over TLS with bundled Mozilla roots) and pool hardening — 30 s wait / 10 s create timeouts plus a prepared-statement cache on the postgres poolbee_orm: model lifecycle —#[bee(auto_now_add)]/#[bee(auto_now)]timestamps,#[bee(soft_delete)](delete flips the flag;with_deleted()/hard_delete()escape it), lifecycle hooks (before/after insert/update/delete),Model::insert_many(999-parameter chunks, not transactional) andQuerySet::filter_inplussum/avg/min/maxaggregatesbee_orm: non-destructive migrations —migrate::{create_table, add_missing_columns, sync}render dialect-aware DDL (sqliteAUTOINCREMENT/ postgresIDENTITY/ mysqlAUTO_INCREMENT), adding tables and missing columns but never dropping or alteringbee_orm: foreign-key relations —#[bee(fk = Target)](with#[bee(sql_type = "…")]) emits FK DDL, andrel::{fk_column_to, belongs_to, children, children_for}read them; enforcement follows the backend: postgres and sqlite (bundled build) enforce the reference, mysql ignores inlineREFERENCES(a gap for round 5+)bee_orm: many-to-many relations —#[bee(m2m(Target))]declares the relation,m2m::{attach, detach, related, related_for, related_ids}read and write it, andcreate_table/synccreate the join table (add_missing_columnsnever touches it)bee_orm: JSON columns —serde_json::Valuefields map toTEXT/JSONB/JSONper backend, with honest NULL semantics: SQLNULLdecodes toNone, a stored JSONnulldocument toSome(Json::Null)bee_orm: opt-in MySQL table-level foreign keys —MigrateOptions { table_level_fk }withsync_with/create_table_with/add_missing_columns_with; off by default, and pre-existing orphan rows makeADD CONSTRAINTfail instead of being skipped silentlybee_orm:Pool::connect_tls_withfor a customrustls::ClientConfig, plus abee_orm::rustlsre-export so the config version always matches;connect_tlskeeps the bundled webpki rootsbee_rust: four forwarding features —orm-sqlite/orm-postgres/orm-postgres-tls/orm-mysqlforward abee_ormbackend throughbee_rust(none of them are infull)bee_cli:bee-rust migrate initscaffoldssrc/bin/bee_migrate.rs(refuses to overwrite an existing file) andbee-rust migrate runexecutes it viacargo run --bin bee_migratebee_kv/bee_cache: the Redis backends survive dropped connections — the underlyingConnectionManagerreconnects on demand (no background thread) with exponential backoff and jitter (the command that hits the break errors; the next one waits for the fresh connection)bee_kv/bee_cache: memcached backends (MemcacheStorein bee_kv,MemcacheCachein bee_cache);incrcreates the counter before applying the delta, unsigned counters floor at 0, and TTL 0 deletes the key
Changed
- bee_orm migrations, relations (including many-to-many), the
bee-rust migrateCLI subcommand, the Redis / Memcached backends, and thebee_rustORM forwarding features are no longer marked as planned in the docs - the search / graph / tsdb drivers are no longer marked in the docs as planned or as a trait stub, but as implemented (opt-in features); the old examples were corrected (nonexistent
ElasticsearchEngine/Neo4jDBtype names, wrongbolt://scheme)
Beerust 1.1.5
Added
- Condensed crates.io READMEs for 11 more languages:
docs/crates-readme.{ja,ko,ru,de,fr,es,pt,hi,ar,bn,id}.md. The language switcher on the crates.io page now points at these instead of the full repository READMEs, so every language gets the same short developer-facing document.
Beerust 1.1.4
Changed
- The crates.io page (
docs/crates-readme.md) is now bilingual: English first, Chinese below. crates.io renders only one README per crate and has no in-page language switch, so this puts English on the first screen while keeping the Chinese text on the same page.
Beerust 1.1.3
Added
- The crates.io page (
docs/crates-readme.md) now carries a 13-language switcher linking to the repository READMEs
Fixed
docs/api.*: 11 translations were missing the link to the Chinese original (api.md)docs/CHANGELOG.zh.mdanddocs/CONTRIBUTING.zh.mdwere the only files in their families without a self-link
Beerust 1.1.2
Added
docs/crates-readme.md: a dedicated README for the crates.io pages — install, a runnable example (taken fromexamples/hello, which is covered by its E2E tests), a feature-flag table, and a sub-crate indexscripts/publish.sh: publishes workspace crates one by one, skips anything already uploaded, and honours the retry time crates.io returns when rate limiting
Fixed
- Test suite did not compile (
cargo test --workspacefailed on main): thebee_routerintegration test was missingSerializeonSubmit(it is returned as aJsonresponse),Router::build()on two helpers, and&on eightstatus_linecalls helloexample tests referenced the wrongCARGO_BIN_EXEname — the binary target keeps its hyphen (CARGO_BIN_EXE_hello-bee)hellotemplate autoescape test asserted'while tera emits'; the escaping behaviour itself was correct- Clippy
manual_split_onceandmanual_range_containslints inbee_cli; an unused import inbee_router's integration test
Changed
- All crates now carry
readmeandrepositorymetadata — previously no crates.io page rendered a README and six crates lackedrepositoryentirely examples/hellois markedpublish = false: it stays in the workspace as the E2E test harness but is no longer published to crates.io