MSRC-Security-Research
circle
MSRC-Security-Research | circle | |
---|---|---|
9 | 55 | |
1,292 | 2,189 | |
0.4% | - | |
5.1 | 5.0 | |
7 months ago | 6 months ago | |
Python | C++ | |
Creative Commons Attribution 4.0 | - |
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.
MSRC-Security-Research
-
A reactionary take on memory safety
You’ll find more primary sources across different organizations that all arrive at the 60 - 70% number. But what really grinds my gears here is that you take a piece from the article you’re criticizing and pretend that it’s a quote from Matt Miller.
It’s actually quite easy to find a primary source here because the slides from the talk that the article is based on are available: https://github.com/microsoft/MSRC-Security-Research/blob/mas...
To quote from those slides: „~70% of the vulnerabilities addressed through a security update each year continue to be memory safety issues“.
-
Zig and Rust
> It's still bizarre though that Rust is capturing such ridiculous mindshare.
I don't think it's that bizarre. The two big headline features that bring Rust such popularity are: #1 "70% of bugs are memory-safety bugs" [1] and Rust can help solve those, and #2 C/C++ have a couple of package manager solutions - none of which have critical mass and Rust "comes with" cargo.
Those two make me really eager to continue experimenting with Rust.
> It seems to be a temporary low-level programming zeitgeist driven by YouTube and Reddit recommendation algorithms to an audience that has never done it and probably never will.
This is some weird gatekeep-y kinda thing. Most of us didn't start out with low-level programming. Wouldn't it have been odd and frustrating for someone to tell your younger self that you have "never written C and probably never will"?
[1] https://github.com/microsoft/MSRC-Security-Research
-
Will Carbon Replace C++?
https://github.com/microsoft/MSRC-Security-Research/blob/mas...
- How CastGuard Works [BHUSA 2022]
-
Arm releases experimental CHERI-enabled Morello board
Windows is likely a big task for the same reasons as SMAP (https://github.com/microsoft/MSRC-Security-Research/blob/mas...). XNU should be comparable to FreeBSD, which CheriBSD is a fork of, as both use Mach's VM for memory management and have a bunch of shared code in various places, but userspace is more of an unknown quite how much effort it'd be (you'll need to port Objective-C and, now, Swift, for example). For Chromium we have ported WebKit, so I'd imagine Blink isn't too dissimilar. V8 is likely interesting, though we have a version of WebKit's JSC JIT for Morello, which gives confidence in V8 being doable.
- Security Analysis of CHERI ISA
- Security Analysis of Cheri ISA [pdf]
-
BleedingTooth: Linux Bluetooth Zero-Click Remote Code Execution
A related post from Google Security Blog[0]:
> "A recent study[1] found that "~70% of the vulnerabilities addressed through a security update each year continue to be memory safety issues.” Another analysis on security issues in the ubiquitous `curl` command line tool showed that 53 out of 95 bugs would have been completely prevented by using a memory-safe language. [...]"
[0]: https://security.googleblog.com/2021/02/mitigating-memory-sa...
[1]: https://github.com/Microsoft/MSRC-Security-Research/blob/mas...
-
Rust for Windows
Here is some of the internal advocacy going on at Microsoft.
- Managed languages if you can afford a GC
- Rust
- C++ with Core Guidelines
https://github.com/microsoft/MSRC-Security-Research/tree/mas...
Note that there are still some teams like Azure Sphere and Azure RTOS, which are only providing C based SDKs, so no everyone is on the same wave length.
circle
- Rusty.hpp: A Borrow Checker and Memory Ownership System for C++20
-
How difficult would it be to make a c++ compiler
Sean Baxter created a front end c++ compiler by himself, using llvm for the back end and the gcc or clang stl. I think it took him a couple of years. https://www.circle-lang.org/. Before this happened I heard a couple of different people claiming that there would never be a totally new compiler as it was too much work.
-
Toward a TypeScript for C++"
The real Typescript for C++ is Circle.
https://www.circle-lang.org/
Just like Typescript to JavaScript, the syntax is an evolution of what already exists, not a completely different syntax.
-
A Metaobject Protocol for C++ [pdf]
Sean Baxter's Circle [1] is arguably the spiritual successor to MOP.
[1] https://www.circle-lang.org/
-
Circle Evolves C++ [video]
Context: https://github.com/seanbaxter/circle/blob/master/new-circle/...
Note that Circle is not an F/OSS compiler as someone pointed out before. This however doesn't make Circle less relevant, because it is actually a testament to show that C++ could have been much better without the claimed breakage. If Circle does provide a number of desirable features and its compiler can be built by a single person, then why shouldn't the committee do the same?
-
My (Herb Sutter's) C++ Now 2023 talk is online: “A TypeScript for C++”
From all wannabe C++ replacements candidates, the only language that is really a TypeScript for C++, is Circle.
For whatever reason, Herb Sutter decided to ignore this language on the presentation.
https://www.circle-lang.org/
This is the only one with the syntax based on C++, incrementally changing the features via #pragma settings.
"Circle Fixes Defects, Makes C++ Language Safer & More Productive"
https://www.youtube.com/watch?v=x7fxeNqSK2k
"Circle Evolves C++"
https://www.youtube.com/watch?v=P1ZDOGDMNLM
- File for Divorce from LLVM
-
Making C++ Safe Without Borrow Checking, Reference Counting, or Tracing GC
The second someone makes a successor language that seamlessly/directly interops with C++ _AND_ has the level of build/IDE tooling that C++/Rust have, I'm on board.
The closest thing right now is Sean Baxter's "Circle" compiler in "Carbon" mode IMO:
https://github.com/seanbaxter/circle/blob/master/new-circle/...
Unfortunately, Circle is closed-source and there's no LSP or other tooling to make the authoring experience nice.
- Circle-lang: A feasible, simple, and immediate way for C++ to break out of the rut it's been in. Surprised more people aren't talking about it.
-
Recurrence-expression is a programmable superset of fold-expression
I read through the whole of https://github.com/seanbaxter/circle/blob/master/new-circle/README.md and man, I'm drooling. Awesome work, kudos.
What are some alternatives?
rust-zmq - Rust zeromq bindings.
raspberry-pi-os - Learning operating system development using Linux kernel and Raspberry Pi
wuffs - Wrangling Untrusted File Formats Safely
dts2hx - Converts TypeScript definition files (d.ts) to haxe externs (.hx) via the TypeScript compiler API
PowerShell - PowerShell for every system!
mdspan - Reference implementation of mdspan targeting C++23
windows-rs - Rust for Windows
papers - ISO/IEC JTC1 SC22 WG21 paper scheduling and management
Cargo - The Rust package manager
CppCoreGuidelines - The C++ Core Guidelines are a set of tried-and-true guidelines, rules, and best practices about coding in C++
winapi-rs - Rust bindings to Windows API
meta