I've just published draft #3 of SRFI 178. It was submitted by John Cowan, author of the SRFI.
John has asked me to announce last call for this SRFI. He believes that it is ready for finalization, but would like to give reviewers one last chance to submit corrections and feedback before we finalize it.
In particular, I appeal to anyone reading this to try the sample implementation, run the tests, and send feedback about your results.
If you're interested in this SRFI, please give your feedback via the SRFI 178 mailing list before 2020-08-17. After that, assuming that no major revisions are required, we will declare it final. It is important that we get your feedback before 2020-08-17. If that deadline is too soon for you, but you would like to contribute, please let me know so that I can extend the last-call period.
Here are John's comments on the draft:
Despite or because of the shortage of discussion here, I think we are ready for last call.
The main API changes are that logical-shift(!), field-replace(!), field-rotate, and field-reverse(!) have returned from draft 1. -field-rotate! was judged too difficult to get right.
The implementation is complete except for a few optional start and end arguments.
The tests are complete except that there is no test for -count-run yet.
Here is the commit summary:
- Show keywords.
- Use HTML links on HTML pages.
- removing bitvector-fill!
- added bitvector-count-run to spec
- Add PROGRESS checklist.
- Add bit->integer / boolean.
- Complete (and rewrite) string->bitvector.
- Add bitvector->integer.
- Add SRFI 151 to the imports.
- Add integer->bitvector.
- Remove duplicated code, fix names.
- Fix indent and delete extra paren.
- Add dummy for internal procedure, note FIXME.
- Add bitvector-map->list functions.
- Fix typo.
- Break up and annotate export list for readability.
- Fix typo.
- Add quasi-string procedures.
- Update PROGRESS.
- Add quasi-integer functions.
- Fix paren typo.
- Fix typo in B macro.
- Fix folds.
- Fix incorrect arguments for some SRFI 160 wrappers.
- Fix errors in pad and trim functions.
- Add field operations.
- Fix arity error in unfold wrappers.
- Fix parens.
- Fix wrappers for map procs and add fast paths.
- Fix wrappers for for-each procs and add fast paths.
- Use bit conversions procedures internally. Get rid of B*, I*.
- Fix missing apply-s.
- Add bitvector-suffix-length.
- Switch %bitvector-tabulate to -tabulate/int.
- Tune two-bitvector cases of -map(!) procedures.
- Fix typos.
- Fix internal procedure names.
- Begin implementing bytevector->bitvector*.
- Fix byte/bit confusion bugs in bytevector->bitvector.
- Refactor bytevector->bitvector*.
- Fix endianness errors in internal procedure.
- More work on bytevector unpacking.
- Initial work on bitvector -> bytevector conversions.
- Implement core bitvector to bytevector conversions.
- Add optional length argument to bitvector->integer.
- Fix typo.
- Simplify bitvector->bytvector!* internal routine.
- Add some tests.
- Note some FIXMEs.
- Remove junk files.
- Begin reorganizing library structure and redo boolean unfolds.
- Revert "Begin reorganizing library structure and redo boolean unfolds."
- Reimplement bool unfolds.
- Delete unfold wrappers and add include.
- Use apply in bitvector-append-subbitvectors wrapper.
- Fix and simplify bytevector->bitvector.
- Add some iterator tests.
- Fix wrapping in bitvector-segment.
- bytevector->bitvector: Remove stale identifiers.
- Start splitting up tests into files.
- Split out remaining major test sections.
- Add tests for remaining iterators.
- Begin adding tests for quasi-string procs.
- Add tests for remaining quasi-string ops.
- bitvector-trim-both: Fix off-by-one error.
- Add more tests for conversions and note FIXMEs.
- Fix bug in bitvector->vector/bool and reimplement.
- Sort includes and remove duplicates.
- Fix off-by-one and bound bugs in string conversions.
- Update PROGRESS.
- only one unfold procedure
- typo
- Remove specialized unfolds.
- Additional conversion tests.
- bitvector->integer: Fix accidental argument shadowing.
- bitvector->bytevector: Fix typo.
- Add tests for remaining conversions.
- Rename generator constructors to match the SRFI.
- Fix errors in generator constructors and refactor.
- make-bitvector-accumulator: Fix error.
- Add tests for generators and accumulators.
- Add initial logic ops. tests, and actually add gen/accum tests.
- Add tests for remaining logical ops.
- Add tests for quasi-int operations and note FIXMEs.
- Unwrap bit argument in -count and -first-bit.
- Add bit-field-reverse and -replace.
- bitvector-field-flip: Fix typo.
- Fix miscalculation in bytevector->bitvector conversions.
- Add bitvector-count-run.
- Add initial bit field ops tests.
- bitvector-fill!: Fix argument order, unwrap fill argument.
- Add -reverse! and -replace!.
- Remove field-reverse and field-replace.
- Remove duplicate exports.
- Additional tests for field operations.
- Note field-rotate! in PROGRESS.
- Revert "Remove field-reverse and field-replace."
- Correctly remove field-replace and field-reverse.
- Add tests for implemented mutator procedures.
- Use ior, not xor, in bitvector-orc1/-orc2.
- Remove logical-shift! stub. Too messy.
- Add bitvector-logical-shift.
- Add bitvector-field-rotate.
- Re-add copying version of reverse and replace.
- Add tests for restored field operations.
- Eliminate unneeded unspecified return values.
- Revert "Fix bug in bitvector->vector/bool and reimplement."
- Re-add wrapped version of bitvector->vector/bool.
- Add missing export.
- Fix typo.
- Rename generators.
- added back logical shift and field operations
- remove curly-brace comments
- Fix errors reported by W3C HTML Validator.
- Switch to new standard SRFI header format.
- Remove trailing whitespace.
- Publish third draft.
Here's the diff:
https://github.com/scheme-requests-for-implementation/srfi-178/compare/draft-2..draft-3
Regards,
SRFI Editor