3
9
Fork
You've already forked enum-map
8

Is this project dead? #147

Open
opened 2024年11月14日 12:59:54 +01:00 by mahkoh · 5 comments

The last released version is 3.0-beta which adds value by allowing to write code that is generic over enums. However, this release is a year old. Could you confirm that there is currently no concrete effort to release these features?

The last released version is 3.0-beta which adds value by allowing to write code that is generic over enums. However, this release is a year old. Could you confirm that there is currently no concrete effort to release these features?

Mostly, yes. At this point all that will likely be fixed is security issues or issues affecting compilation (in case enum-map gets broken by future Rust release), at this point I don't really want to maintain this project anymore.

Mostly, yes. At this point all that will likely be fixed is security issues or issues affecting compilation (in case enum-map gets broken by future Rust release), at this point I don't really want to maintain this project anymore.
Contributor
Copy link

We use enum-map extensively. I can take over the project either fully or as a co-maintainer if there's no plan to accept non-critical pull requests and releases.

EDIT: Or possibly we (https://github.com/tsurucapital/) would take it over as an organisation.

We use enum-map extensively. I can take over the project either fully or as a co-maintainer if there's no plan to accept non-critical pull requests and releases. EDIT: Or possibly we (https://github.com/tsurucapital/) would take it over as an organisation.
Author
Copy link

I've gone ahead and written a replacement for my usecases: https://docs.rs/linearize

I also took the opportunity to fix some of the remaining issues with enum-map:

  • The traits of the map, e.g. Clone, only depend on the the key and value type. In enum-map, some of these traits depend on the opaque K::Array type that is unknowable in code that is generic over K.
  • In order to do this for Copy, I had to split the map type into two, StaticMap and StaticCopyMap, where StaticCopyMap only works for copyable values and is itself always copy. There are zero-cost conversions between these two types.
  • The macro to create maps also works in constants and statics and works with single-use (non copyable/movable) values.
  • Code generation of the proc macro is improved. The enum-map proc macro would generate code that used an amount of stack space that was linear in the number of variants (in debug builds) and did not always optimize to a no-op in the case of C-style enums. At least for C style enums, my macro always only uses a few bytes of stack space, complies to a lookup table in debug builds, and compiles to a no-op in release builds (tested for up to 10000 variants).
I've gone ahead and written a replacement for my usecases: https://docs.rs/linearize I also took the opportunity to fix some of the remaining issues with enum-map: - The traits of the map, e.g. Clone, only depend on the the key and value type. In enum-map, some of these traits depend on the opaque K::Array type that is unknowable in code that is generic over K. - In order to do this for `Copy`, I had to split the map type into two, StaticMap and StaticCopyMap, where StaticCopyMap only works for copyable values and is itself always copy. There are zero-cost conversions between these two types. - The macro to create maps also works in constants and statics and works with single-use (non copyable/movable) values. - Code generation of the proc macro is improved. The enum-map proc macro would generate code that used an amount of stack space that was linear in the number of variants (in debug builds) and did not always optimize to a no-op in the case of C-style enums. At least for C style enums, my macro always only uses a few bytes of stack space, complies to a lookup table in debug builds, and compiles to a no-op in release builds (tested for up to 10000 variants).

Has someone taken this over? It's great that https://docs.rs/linearize exists, but we'd rather see a fixed enum-map that retains the current API.

@martinthomson submitted some PRs that fix things which we'd like to see merged.

Has someone taken this over? It's great that https://docs.rs/linearize exists, but we'd rather see a fixed `enum-map` that retains the current API. @martinthomson submitted some PRs that fix things which we'd like to see merged.

Right, those pull requests wait for CI to pass. Will merge them once they rebase, and I will try to release a new version of the library.

Right, those pull requests wait for CI to pass. Will merge them once they rebase, and I will try to release a new version of the library.
Sign in to join this conversation.
No Branch/Tag specified
master
v2
gat
v0.6
v2.7.3
v2.7.2
v2.7.0
v3.0.0-beta.2
v2.7.1
v3.0.0-beta.1
v3.0.0-0.gat.0
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.0
v2.4.2
v2.4.1
v2.4.0
v2.3.0
v0.4.1
v0.3.2
v0.2.36
v0.2.35
v0.4.0
v0.3.1
v0.3.0
v0.2.34
v0.2.33
v0.2.32
v0.2.31
v0.2.30
v0.1.0
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
4 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sugar700/enum-map#147
Reference in a new issue
sugar700/enum-map
No description provided.
Delete branch "%!s()"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?