15 个版本 (6 个重大变更)

0.13.2 2021年2月2日
0.13.1 2020年12月29日
0.13.0 2020年7月20日
0.9.4 2019年12月27日
0.8.0 2019年6月23日

#176 in 缓存

Download history 46/week @ 2024-03-12 32/week @ 2024-03-19 37/week @ 2024-03-26 94/week @ 2024-04-02 16/week @ 2024-04-09 26/week @ 2024-04-16 48/week @ 2024-04-23 27/week @ 2024-04-30 22/week @ 2024-05-07 27/week @ 2024-05-14 26/week @ 2024-05-21 41/week @ 2024-05-28 25/week @ 2024-06-04 24/week @ 2024-06-11 26/week @ 2024-06-18 18/week @ 2024-06-25

每月下载量 98
10 个crate中使用 (4个直接使用)

MIT/Apache

105KB
1.5K SLoC

topo

topo crate提供增量缓存和重复函数调用的标识符。与变更通知机制结合使用,可以实现一种形式的 增量计算

[0.13.2] - 2021-02-01

变更

  • 内部重构以减少代码大小。

[0.13.1] - 2020-12-28

添加

  • wasm-bindgen cargo功能,该功能在wasm32目标上启用parking_lot的正确使用。

[0.13.0] - 2020-07-19

移除

  • cache模块提取到dyn-cachecrate。

[0.12.0] - 2020-07-06

变更

  • cache::{Cache, LocalCache}::get_if_arg_eq_prev_input的返回类型现在也返回查询类型的哈希值,并且cache::{Cache, LocalCache}::store需要它。

[0.11.0] - 2020-07-06

添加

  • cache::{Cache, LocalCache}::Hashed存储查询键及其哈希值以供以后存储。

变更

  • cache::{Cache, LocalCache}::get_if_arg_eq_prev_input在查找失败时现在返回Err(Hashed)而不是None。现在,在插入新的输入和输出时,这两种类型的store函数现在都需要传递Hashed
  • 缓存内容现在在单个循环中GC,之前每个命名空间都有两次迭代。

修复

  • 此版本移除了缓存API中的最后一个“已知冗余”工作。

[0.10.0] - 2020-07-05

修复

  • Id生成不再容易受到哈希冲突的影响。

添加

  • #[nested]允许指定一个slot
  • cache::{Cache, GlobalCache} 用于存储内部化和缓存化的值的类型。
  • cache::{SharedCache, SharedGlobalCache} 类型,用于实现安全的多所有者访问缓存,通过谨慎的锁定实现 cache_with,以便将来允许嵌套调用。
  • root 是一个免费函数,允许重新设置调用拓扑的根(即在更大的调用拓扑内部运行时)。

移除

  • CallsitePoint 不再是 pub
  • #![feature(track_caller)] 不再需要,尽管在 1.46 达到 beta/stable 之前,MSRV 为 nightly-2020-07-02。

变更

  • call_in_slot 接受借用槽。
  • Id 已重命名为 CallId
  • illicit 依赖项更新到 1.0。
  • impl Trait 已从可能导致意外的 Send/!Send 合约的公共 API 中移除。

[0.9.4] - 2019-12-26

变更

  • illicit 依赖项更新到 0.9.0

[0.9.3] - 2019-12-25

变更

  • #[track_caller] 用于生成 Id,取代宏。目前需要 nightly。
  • 使用 DefaultHasher 代替 FnvHasher

添加

  • callcall_in_slot 函数。

移除

  • call!unstable_make_topo_macro! 宏。

[0.9.2] - 2019-11-23

变更

  • 使用 fnv crate 对 Id 进行哈希。

[0.9.1] - 2019-11-21

移除

  • #![warn(intra_doc_resolution_failure)] 由于 root_html_url 而导致 docs.rs 出现问题。

[0.9.0] - 2019-11-19

添加

  • #![禁止(不安全代码)]
  • call! 除了接受调用站点被看到的次数之外的 "槽"。调用站点计数仍然是默认值。
  • 在没有 Point 已经被输入时调用 call! 将现在创建一个新的根并进入它,然后再执行代码块。

变更

  • #[bound] 重命名为 #[nested]
  • current_callsite_count 重命名为 Callsite::current_count

移除

  • env!Env#[from_env] 已移动到 illicit 库。
  • Point 外调用 call! 时,移除了 root!,改为创建新的根。

[0.8.2] - 2019-08-20

修复

  • root! 现在不再隐藏外部环境。

[0.8.1] - 2019-08-17

变更

  • IdDebug 实现使用十六进制。

修复

  • 行结束符错误。

[0.8.0] - 2019-06-23

添加

  • #[topo::bound] 将一个函数附加到拓扑结构。
  • root!call! 宏分别将任意块附加到新的或当前的拓扑结构,每个调用都会进入新的 Point,每个调用都有一个(主要是)唯一的 Id
  • env! 宏允许声明类型索引的隐式变量,生成 Env 实例。

[0.1.0] - 2019-05-26

发布以在 crates.io 上保留名称。

依赖关系

~2.7–4.5MB
~88K SLoC