I've just published draft #2 of SRFI 176. It was submitted by Lassi Kortela, author of the SRFI.
https://srfi.schemers.org/srfi-176/
Lassi 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 176 mailing list before 2020/2/15. After that, assuming that no major revisions are required, we will declare it final.
Here are Lassi's comments on the draft:
Since there are so many commits, this summary will be easier to read:
* Sample implementation:
- Lots of new code, including:
- Sample main program for "Fantastic Scheme", written in C.
- Parsers for sed|grep, awk, C, and various Lisp dialects.
- Code to generate timestamps, fetch git info, etc.
* New behavior:
- A (version-alist) procedure has been added.
- Runtime option (-:version) and standalone executables have been addressed.
* Changed behavior:
- Parsing has been simplified. Duplicate alist entries are no longer merged.
- Properties have been renamed to form a consistent hierarchy; details below.
- Date and time properties are now based on RFC 3339.
* Clarifications:
- Edge cases in LOSE syntax and command line handling have been clarified.
- Survey of existing flags has been turned into an easier-to-read table.
- Unnecessary prose has been removed.
* Renamed properties:
- language -> languages
- scheme-id -> scheme/id
- features -> scheme/features
- library-path -> scheme/path
- release-date -> release/date
- release-name -> release/name
- build-date -> build/date
- configure -> build/configure
- platform -> build/platform
- image-date -> image/date
- image-file -> image/file
* Removed properties:
- revision (broken into build/git/... properties)
- platform-os (too complex; use build/platform and os/uname)
- platform-computer (too complex; use build/platform and os/uname)
- platform-bits (too vague; use c/type-bits)
* New properties:
* General properties
- encodings
* Build properties
- build/git/tag
- build/git/branch
- build/git/commit
- build/git/modified
* Scheme properties
- scheme/srfi
* C properties
- c/version
- c/compile
- c/link
- c/type-bits
- Java virtual machine properties
- jvm/...
- Operating system properties
- os/env/...
- os/uname
Here is the commit summary:- Reformat with HTML Tidy
- Make example consistent
- Fix heading levels
- Fix table of contents
- Fix subheading
- Add Editor: line
- Simplify heading
- Improve grammar
- Clarify output rules in the Specification section
- Work around Firefox column formatting bug.
- Show title more clearly
- Omit Copyright section from table of contents
- Add Bigloo version example
- Note 'gosh -v' as incompatible with a '-v' version flag
- Remove extraneous whitespace around HTML list items
- Remove invalid '64bit' symbol because it starts with a digit
- Rename (language ...) -> (languages ...)
- Prettify HTML ellipsis
- Add note about valid feature identifiers
- Add example of blank (features)
- Update Acknowledgements section
- Improve 'git describe' instructions
- Add c-type-bits
- Remove platform-bits
- Use slash as separator in implementation-defined properties
- Add implementation
- Disable read-time evaluation in Common Lisp reader
- Allow color when isatty() is assured
- Fix typo
- Fix gcc example which is actually clang
- Remove unnecessary <code> tags inside <pre>
- Add (website ...) example
- Clarify note
- Enable GCC/clang runtime buffer overflow detector
- Add portable RFC 3339 date/time code in C and shell
- Take seconds out of the example timestamps
- Add date and time section
- Update explanations of date properties
- Turn survey into a table
- Add note about unknown timezone
- Simplify remark
- Add note about custom C types
- Add link to sample implementation
- Clarify C type rules
- Add CSS for survey table
- Add -:version runtime option
- Reformat
- Rename c-type-bits -> c/type-bits
- Add more C language properties
- Add JVM and environment variable properties
- Add 'encodings' property
- Edit prose
- Replace image- with image/
- Rename features -> scheme/features
- Rename library-path -> scheme/path
- Add scheme/srfi property
- Fix 'git describe'
- Move 'website' up
- Rename Runtime -> Scheme
- Move 'scheme-id' down
- Rename scheme-id -> scheme/id
- Move 'scheme/features' down
- Add 'scheme/srfi' examples
- Move 'encodings' up
- Change 'website' description
- Slash release-date and release-name
- Slash build-date
- Rename platform -> build/platform
- Move 'scheme/path' up
- Move 'build/date' up
- Move 'configure' down
- Fix c/type-bits example
- Fix spacing
- Reword env var section
- Reword JVM section
- Move install-dir up
- Add Gauche command example
- Rename configure -> build/configure
- Move 'version' up
- Move 'release' up
- Re-title version -> release properties
- Move 'Scheme language properties' down
- Expand Git properties
- Remove fancy platform properties
- Rename sections
- Rename env -> os/env
- Add uname
- Specify jmv/* and os/env/* are run-time
- Add Haiku uname
- Add sample of Scheme implementation's main program
- Update readers to match new vocabulary
- Make R6RS and R7RS copies of Scheme reader
- Drop support for negative integers
- Clarify lack of shared structure support
- Clarify list whitespace rules
- Clarify missing syntax
- Suggest caution with nested lists
- Clarify top-level lists
- Point out lack of records and hash-tables
- Fix CR/LF rule
- Clarify booleans
- Update sample implementation section
- Edit prose in flag specification
- Add 'Accessing from Scheme' section
- Delete 'Hacks for lists' and 'Wrapping up'
- Add 'Easy forms'
- Edit prose lightly
- Edit the prose some more
- Update sample output
- Edit prose some more
- Edit prose once more
- Publish second draft.
Here's the diff:
Regards,
SRFI Editor