- BREAKING CHANGES - Rust: new return types for significant performance improvements:
MultiFizzBuzz
now lazily returns a rayon IndexedParallelIteratorFizzBuzz
returns aFizzBuzzAnswer
which can be converted into aString
orCow<str>
FizzBuzzAnswer
now represents the valid answers to FizzBuzz, notOne(String)
orMany(Vec>String>)
- Python implementation updated to work with rust v4.0.0 which brings slight performance improvements (approx 10-20%)
- Return
list[str]
when passed alist
orslice
, continue to returnstr
when passed a singleint
. - Allow a
slice
to be passed tofizzbuzzo3.fizzbuzz
- this provides a further 1.5x speed increase over passing a list with the same elements. - Build rust with
--release
optimisations - another 4-7x speed increase.
- Fix dedicated test case for big vector.
- Additional test case validating use case for stepped range, no code changes required.
- BREAKING CHANGE: MultiFizzBuzz will consume the input.
- MultiFizzBuzz can accept any type of input which will provide a
rayon::iter::IndexedParallelIterator
viarayon::iter::IntoParallelIterator
. Specifically this is tested to also acceptRange<i32>
(but notRangeInclusive<i32>
or Ranges of larger types).
- Update pyo3testing framework used for rust exports to v0.3.4 (Simplifies unit tests in rust source)
- Python and rust variants are now under single fizzbuzz namespace as
fizzbuzz.fizzbuzzpy
andfizzbuzz.fizzbuzzo3
- Add type and docstring hinting for fizzbuzzo3
- Add signature and docstring info to pyo3function in case needed via
fizzbuzz.__doc__
andfizzbuzz.____text_signature__
- Enable python doctests for both python and rust variants
- Clean before building each set of wheels to ensure that wheels compiled for non x86 linux architectures run correctly
- Add a justfile to make cleaning, linting, testing etc. easier
- Process
Vec
s /list
s with more than 300k elements in parallel
fizzbuzz()
can be called on aVec<Num>
- Provide the return from
fizzbuzz()
as aFizzBuzzAnswer
which supports.into()
String
andVec<String>
fizzbuzzo3.fizzbuzz
can be passed alist
of numbers, the return will be astr
of all the answers
- Test each wheel as part of build process
- Release from
main
branch
- Build for additional linux architectures (non-intel)
- Build wheels for most architectures (except:
musllinux-i686
andwindows-arm64
)