SaferCPlusPlus-AutoTranslation2
papers
SaferCPlusPlus-AutoTranslation2 | papers | |
---|---|---|
4 | 85 | |
8 | 593 | |
- | 2.0% | |
0.0 | 4.2 | |
about 2 years ago | 13 days ago | |
Perl | ||
Boost Software License 1.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.
SaferCPlusPlus-AutoTranslation2
-
United States White House Report on Memory Safe Programming [pdf]
Hi pizlonator, I'm working on a solution with similar goals (I think), but a bit of a different approach. It's a tool that auto-translates[1] (reasonable) C code to a memory-safe subset of C++. The goal is to get it reliable enough that it can be simply inserted as an (optional) build step, so that the source code can be maintained in its original form.
I'm under the impression that you're more of a low-level/compiler person, but I suggest that a higher level language like (a memory-safe subset of) C++ actually makes for a more desirable "intermediate representation" language, as it's amenable to maintaining information about the "intent" of the code, which can be helpful for optimization. It also allows programmers to provide manually optimized memory-safe implementations for performance-critical parts of the code.
The memory-safe subset of C++ is somewhat analogous to Rust's in terms of performance and in that it depends on a non-trivial static checker, but it imposes less onerous restrictions than Rust on single-threaded code.
The auto-translation tool already does the non-trivial (optimization) task of determining whether any (raw) pointer is being used as an array iterator or not. But further work to make the resulting code more performance optimal is needed. The task of optimizing a high-level "intermediate representation" language like (memory-safe) C++ is roughly analogous to optimizing lower-level IR languages, but the results should be more effective because you have more information about the original code, right?
I think this project could greatly benefit from the kind of effort you've displayed in yours.
[1]: https://github.com/duneroadrunner/SaferCPlusPlus-AutoTransla...
-
Upcoming Changes to C++ : Bjarne Stroustrup, Gabriel Dos Reis.
Part of the reason the proposed static analyzer has to be so ambitious is because it's trying to validate (i.e. verify as safe) as much existing/legacy code as possible. An alternative approach is to autoconvert existing code to new code that is easier to verify as safe. One advantage of this approach is that in instances where you cannot (yet) statically verify safety, you can convert to (new) elements that may resort to run-time safety mechanism when necessary. With access to the full range of safety-performance tradeoffs, this approach can (fully) safen a much larger set of legacy code then any static analyzer alone could.
-
Some thoughts on safe C++
There's also some support for autoconverting legacy C code that is not performance critical to use the library and conform to a safe subset of C++.
papers
-
Qt and C++ Trivial Relocation (Part 1)
It is slowly making its way through the standards committee. https://github.com/cplusplus/papers/issues/43
The author has a fork of clang and gcc with some pretty impressive speedups, so I’m hopeful! https://lists.isocpp.org/sg14/2024/04/1127.php
-
Learn Modern C++
What's fun is, because everything is decided in papers, we can find out why! https://github.com/cplusplus/papers/issues/884
Accepted paper here: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p20...
> The proposed std::print function improves usability, avoids allocating a temporary std::string object and calling operator<< which performs formatted I/O on text that is already formatted. The number of function calls is reduced to one which, together with std::vformat-like type erasure, results in much smaller binary code (see § 13 Binary code).
Additionally,
> Another problem is formatting of Unicode text:
> std::cout << "Привет, κόσμος!";
> If the source and execution encoding is UTF-8 this will produce the expected output on most GNU/Linux and macOS systems. Unfortunately on Windows it is almost guaranteed to produce mojibake despite the fact that the system is fully capable of printing Unicode
- The insanity of compile time programming
- P1673 A free function linear algebra interface based on the BLAS
-
When will std::linalg make it into a new C++ release?
See https://github.com/cplusplus/papers/issues/557
-
C++ Papercuts
Bringing editions to C++ failed, and I am not aware of anyone trying to tackle the issues https://github.com/cplusplus/papers/issues/631
(I could be wrong though! I follow the committee more than you may guess, but not as much as to think I know everything about what's going on.)
-
Argonne National Lab is attempting to replicate LK-99
GitHub would not be relevant in this respect because:
* It's owned by a (single) commercial corporation, Microsoft.
* There is censorship both by content and in some respects by country of origin.
* The code is closed.
but otherwise it's an interesting idea.
The C++ standardization committee uses GitHub to track papers submitted to them, see:
https://github.com/cplusplus/papers
-
C++23: The Next C++ Standard
There was no non-approval. The facility needs more work, and the authors (and the committee) were focusing on getting print/format done first. I hope that the paper will be worked on again in the future. We will be happy to review it once there is a revision (see github for history)
- What C++ library do you wish existed but hasn’t been created yet?
-
2023-06 Varna ISO C++ Committee Trip Report — First Official C++26 meeting!
For more details on what we did at the 2023-06 Varna meeting, the [GitHub issue](https://github.com/cplusplus/papers/issues/328) associated with the paper has a summary.
What are some alternatives?
circle - The compiler is available for download. Get it!
compiler-explorer - Run compilers interactively from your web browser and interact with the assembly
C++ Format - A modern formatting library
LEWG - Project planning for the C++ Library Evolution Working Group
CPM.cmake - 📦 CMake's missing package manager. A small CMake script for setup-free, cross-platform, reproducible dependency management.
tinyformat - Minimal, type safe printf replacement library for C++
FastAD - FastAD is a C++ implementation of automatic differentiation both forward and reverse mode.
rangesnext - ranges features for c+23 ported to C++20
mp11 - C++11 metaprogramming library
foundation.rust-lang.org - website for Rust Foundation
sg16-meetings - SG16 meeting plans and summaries
stl-header-heft - Measures how parsing overweight the major STLs have become