cakeml
checkedc
Our great sponsors
cakeml | checkedc | |
---|---|---|
14 | 21 | |
912 | 3,183 | |
2.1% | 0.6% | |
9.8 | 0.0 | |
5 days ago | over 1 year ago | |
Standard ML | C | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
cakeml
-
The Deep Link Equating Math Proofs and Computer Programs
If I understand what you are asking about correctly, then I do think you are mistaken.
As a sibling comment observed, you would be proving something about a program, but proving things about programs is both possible and done.
This ranges from things like CakeML (https://cakeml.org/) and CompCert (compilers with verified correctness proofs of their optimizations) to something simple like absence of runtime type errors in statically strongly soundly-typed languages.
Of note is that you are proving properties of your program, not proving them perfect in every way. The properties of your program that you prove can vary wildly in both difficulty and usefulness. A sufficiently advanced formally verified compiler like CakeML can transfer a high-level proof about your source code to a corresponding proof about the behavior of the generated machine-executable code.
-
The future of Clang-based tooling
> A single IR with multiple passes is a good way to build a compiler
https://mlir.llvm.org/, which is using, is largely claiming the opposite. Most passes more naturally are not "a -> a", but "a -> b". data structures and data structures work hand in hand, it is very nice to produce "evidence" for what is done in the output data structure.
This is why https://cakeml.org/, which "can't cheat" with partial functions, has so many IRs!
Using just a single IR was historically done for cost-control, the idea being that having many IRs was a disaster in repetitive boilerplate. MLIR seeks to solve that exact problem!
- CakeML – A Verified Implementation of ML
-
Tools for Verifying a Language and its Semantics
You may want to look at [CakeML](https://cakeml.org) done in HOL4, there is also a nice proof pearl about a more .. minimalistic verified bootstrapped compiler also in HOL4.
-
old languages compilers
CakeML
-
Is there a formally-proven real-time language/computing env. or operating system?
There is also Cake ML which is a formally verified functional programming language compiler and runtime.
-
CakeML: A Verified Implementation of ML
There is also a CakeML -> Standard ML compiler though it seems to have been built to translate benchmarks and sort of old so I'm not sure how comprehensive it is: https://github.com/CakeML/cakeml/tree/master/unverified/front-end
-
The λ-Cube
> One guess is that lisps cope with being minimal through use of macros and metaprogramming, it's difficult for a typed language to support that level of metaprogramming while maintaining the various guarantees that one wants from such a system.
Difficult, but certainly not impossible [0].
[0] https://cakeml.org/
-
Two Mechanisations of WebAssembly 1.0
If this interests you, I'd highly recommend checking out CompCert (docs here) and CakeML.
- VLISP: A Verified Implementation of Scheme [pdf]
checkedc
- The NSA list of memory-safe programming languages has been updated
-
The Fil-C Manifesto: Garbage In, Memory Safety Out
https://github.com/microsoft/checkedc
Also, one can combine subsets of C with FOSS, static analyzers that can handle those subsets. Then, compose only in ways that the tools can handle. Then, combinatorial and fuzz testing of the interface composition.
I know you’re doing the project for fun while exploring specific ways to achieve your goals. So, these are just some links and concepts that might help on your journey. Lots of folks don’t know about prior work in this area. So, I keep passing it on.
-
My Bad Habit of Hoarding Information
- [Checked C](https://github.com/microsoft/checkedc) - extensions to make C safer #cpp
- Checked C
- Is it possible to have a superset of the C programming languages standard that is as safe as Rust?
- Checked C by Microsoft Research
-
Azure CTO: “It's time to halt starting any new projects in C/C++ ”
Yes. Microsoft Research is working on "Checked C": https://www.microsoft.com/en-us/research/project/checked-c/
As a test, someone ported FreeBSD's networking stack to Checked C. It was easy and there was no overhead to performance and binary size.
-
I want to learn csharp man
Haha. I think they did ultimately agree. Thus a later research project is: Checked-C
What are some alternatives?
Daikon - Dynamic detection of likely invariants
koka - Koka language compiler and interpreter
hardware - Verilog development and verification project for HOL4
rust.ko - A minimal Linux kernel module written in rust.
mpl - The MaPLe compiler for efficient and scalable parallel functional programming
manyclangs - Repository hosting unofficial binary pack files for many commits of LLVM
CompCert - The CompCert formally-verified C compiler
c2rust - Migrate C code to Rust
Checker Framework - Pluggable type-checking for Java
linux - Linux kernel source tree
smlpkg - Generic package manager for Standard ML libraries and programs
dafny - Dafny is a verification-aware programming language