Repository navigation
1.0.0 #3
MattCCC
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
C++L 1.0.0 — V1
Provable C++, without replacing C++. State what must be true, prove it, remove the proof layer, and ship ordinary native C++.
Warning
1.0.0 is stable but not production-ready. "Stable" means the language, grammar and kernel calculus are frozen. Until the maintainer has finished reviewing the kernel and testing the proofs more, treat C++L as potentially unsafe for production applications.
Highlights
verifiedfunctions goes to Clang unchanged. If you use a C++L word as a C++ name, it keeps its C++ meaning and the compiler warns you.PROVENclaim comes from the proof kernel accepting exactly that goal. The kernel has 15 rules and adds no axioms. A Coq model of how the kernel checks proofs is proven sound and consistent, and the C++ kernel is tested against that model.expects,ensures,decreasesand loopinvariants on functions, member functions and function templates. Contracts hold inside one translation unit and across units through checked verification interfaces.lawdeclarations, propositionalEq<T>withrewrite, induction over unsigned machine integers, and termination measures.type R = T where (...). A value gets a refinement type either through a static proof or through an explicitvalidate<R>(e), and every report names the validation site.std::vector,std::arrayandstd::span&&,||and?:if,switchand range-basedfor-O0and-O2.unsafecode, imported contracts and runtime validations.cppl, the compiler, which acceptsclang++'s command linecppl-format, the formattercppl-lsp, the language serverRelease metadata
cppl-kernel-0.9.0cppl-core-0.9.0cppl-verification-9c++17,c++20,c++23Not supported in V1
Everything below is refused with a diagnostic, so none of it can be counted as verified by accident:
let@domainsstd::optionalandstd::string_viewswitchinit-statements andif constevalTrust
A
PROVENclaim holds relative to the trusted components listed in its report: the kernel, the C++-to-proof translation (which is not itself verified), the toolchain, and any trusted laws, library models,unsafecode, imported contracts and runtime validations it depends on. See TRUST.md.Compatibility
Verification interfaces written by earlier builds are refused because the verification semantics changed.
Docs: INSTALL · STATUS · SPEC · CHANGELOG
This discussion was created from the release 1.0.0.
All reactions