0.4.0 — repin the C library, which no longer answers a question with another one's answer - #10
Merged
Merged
Conversation
…h another one's answer
openkal-musl 0.7.0. Nothing in this package changes: it names the C library and
the C library named the specification, so what moves is one line.
What the consumers of this package get is measured rather than asserted. The
same `std::filesystem` program, run over this stack and over the host's own
toolchain, now agrees row for row where it did not:
stat on a node naming another was a link, is what the name refers to
is_regular_file on the same was false for bytes it could read
file_size on the same was refused
exists on one naming nothing was true
is_directory in an enumeration was false for one naming a directory
copy of a tree holding one was ENOSYS; one such node made a whole
tree uncopyable
readlink was ENOSYS
equivalent of two different files was TRUE, with no error
and `signal(SIGABRT, …)`, which any terminal library, death test or crash
reporter performs before it does anything else, no longer ends the program.
Every README here opens by showing what a program writes in its manifest, which is the first thing a reader copies and the last thing anyone edits. These lines had drifted --- the specification's own README asked for a version four minor releases old --- and nothing checked them. `openkal/tools/check-readme-versions.sh` now does.
examples/cxx asserted that creating a symbolic link is refused. openkal 0.9 added kal_fs_link_create, openkal-musl 0.7 answers symlinkat with it, and the refusal stopped arriving -- so this failed, which is the good case. An assertion that had merely tolerated both answers would have made the arrival of the operation invisible here, and this file is the only place in the ecosystem where a C++ standard library exercises it. The link is now created, read back, and asked about both ways: an enquiry that does not resolve reports the link, one that resolves reports the file, and the size read through it is the file's. Writing that produced a failure of its own worth recording. The target was first spelled `dir / "a.txt"', which looks more careful than `"a.txt"' and is wrong: a link's content is resolved relative to the directory holding the link, so it named cxx-probe.d/cxx-probe.d/a.txt and dangled. Three assertions failed against a port that was answering correctly.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
openkal-musl 0.7.0. Nothing in this package changes: it names the C library and
the C library named the specification, so what moves is one line.
What the consumers of this package get is measured rather than asserted. The same
std::filesystemprogram, run over this stack and over the host's own toolchain,now agrees row for row where it did not:
staton a node naming anotheris_regular_fileon the samefile_sizeon the sameexistson one naming nothingis_directoryin an enumerationcopyof a tree holding oneENOSYS— one such node made a whole tree uncopyablereadlinkENOSYSequivalentof two different filesAnd
signal(SIGABRT, …), which any terminal library, death test or crashreporter performs before it does anything else, no longer ends the program.