Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New version: PermutationGroups v0.4.0 #89771

Merged

Conversation

JuliaRegistrator
Copy link
Contributor

UUID: 8bc5a954-2dfc-11e9-10e6-cd969bffa420
Repo: https://github.com/kalmarek/PermutationGroups.jl.git
Tree: 889a0fa8371abd673facae7df2ac5dfdbe224b62

Registrator tree SHA: f73a20c99934db92a256057d0d83ba394036a701
JuliaRegistrator referenced this pull request in kalmarek/PermutationGroups.jl Aug 16, 2023
Total rewrite of the package:
 * Drop the dependency on `AbstractAlgebra.Perm`: we ship our own `Perm{T}` which is defined   inside `PermutationGroups.Perms` module. Notable changes from the `AA` version:
   - `AbstractPermutation` interface (testable!) which the new `Perm` follows
   - `Perm` caches its inverse (so that second and later calls to `inv` are essentially free!)
   - and tries very hard to make sure that there will be at most one inverse perm (that is unless you copy it explicitly).
   - caching usually is problematic with multithreading, but the new `Perm` tries to stay thread-safe 
   - due to the usage of `@atomic`s `Perm` is now a `mutable struct`, so creating a `Perm` requires two allocations (julia-1.9): one for the storage of images, second for the `Perm` object.
 * Rewrite `StabilizerChain` to use the recursive formulation and rewrite `schreier_sims` accordingly
 * New, rather fast iteration over leafs of the `StabilizerChain` tree (i.e. group elements)
 * switch to using `Transversal` by default. This is justified by benchmarks; If you want to use `SchreierTransversal` (e.g. because you run out of memory) you may do so by defining `PermGroup(SchreierTransversal, gens)`
 * By default `Perm`s use `UInt16` as storage; This applies to `perm"(1,2,3)"` macro as well. Again, you may change this by calling `PermGroup(Perm{UInt}.(gens))`; For "normal" usage `UInt32` should be more than enough though. 

 * Major breaking changes:
  - non-constant `degree` in a permutation group (in particular `degree(one(perm)) == 1`)
  - all `Perm`s are compatible (i.e. embedded in `Sym(∞)`)
  - `Permutation`s implement Group interface; `Perm`s don't.

If you use just external interface it is likely that this release won't be breaking for you.
@JuliaRegistrator JuliaRegistrator temporarily deployed to stopwatch August 16, 2023 14:24 — with GitHub Actions Inactive
@github-actions
Copy link
Contributor

Your new version pull request met all of the guidelines for auto-merging and is scheduled to be merged in the next round.


If you want to prevent this pull request from being auto-merged, simply leave a comment. If you want to post a comment without blocking auto-merging, you must include the text [noblock] in your comment. You can edit blocking comments, adding [noblock] to them in order to unblock auto-merging.

@JuliaTagBot JuliaTagBot merged commit 95ff09a into master Aug 16, 2023
18 checks passed
@JuliaTagBot JuliaTagBot deleted the registrator-permutationgroups-8bc5a954-v0.4.0-d6e0238d44 branch August 16, 2023 14:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants