Rust-style safety model for C++ 'rejected' as profiles take priority
- Reference: 1758026710
- News link: https://www.theregister.co.uk/2025/09/16/safe_c_proposal_ditched/
- Source link:
"The Rust safety model is unpopular with the committee. Further work on my end won't change that. Profiles won the argument
"The Safety and Security working group voted to prioritize Profiles over Safe C++. Ask the Profiles people for an update. Safe C++ is not being continued," [1]said Sean Baxter in June this year.
The topic came up as developers like Simone Bellavia [2]noted the anniversary of the proposal. One year ago, Baxter [3]told The Reg that the project would enable C++ developers to get the memory safety of Rust, but without having to learn a new language. "Safe C++ prevents users from writing unsound code," he said. "This includes compile-time intelligence like borrow checking to prevent use-after-free bugs and initialization analysis for type safety."
Safe C++ would enable incremental migration of code, since it only applies to code in the safe context. Existing unsafe code would run as before.
Even the matter of whether the proposal has been abandoned is not clear-cut. Erich Keane, C++ committee member and co-chair of the C++ Evolution Working Group (EWG), [4]said that Baxter's proposal "got a vote of encouragement where roughly 1/2 (20/45) of the people encouraged Sean's paper, and 30/45 encouraged work on profiles (with 6 neutral)... Sean is completely welcome to continue the effort, and many in the committee would love to see him make further effort on standardizing it."
[5]
In response, Baxter said: "The Rust safety model is unpopular with the committee. Further work on my end won't change that. Profiles won the argument."
[6]
[7]
He added that the [8]language evolution principles adopted by the EWG include the statement that "we should avoid requiring a safe or pure function annotation that has the semantics that a safe or pure function can only call other safe or pure functions." This, he said, is an "irreconcilable design disagreement. Safe function coloring is the core of the Rust safety model."
[9]'Powerful but dangerous' full MCP support beta for ChatGPT arrives
[10]Microsoft drops .NET 10 RC 'go-live' with 55,000 words on why it's faster
[11]Microsoft's first preview of Visual Studio 2026: Deeper AI and a design refresh
[12]Atlassian's move to cloud-only means customers face integration issues and more
C++ inventor Bjarne Stroustrup advocates [13]profiles , which, he [14]told us , say: "I want this set of guarantees and it will then be enforced." According to Stroustrup, "the sad thing is, the standards committee got confused and did not guarantee that this would be in C++ 26."
That said, profiles are also controversial, with complaints, [15]for example , that "profiles don't look like any established working solution, don't have an implementation, and also failed to get into the C++ 26 standard earlier this year, instead the committee wanted another whitepaper on it."
Baxter does not believe profiles will achieve the goal. "I would have implemented profiles if profiles had a chance of working. But they will not ever work. I present many examples of why they fail here: [16]https://www.circle-lang.org/draft-profiles.html ," he [17]said yesterday on Hacker News.
[18]
He added that "the whole Standard Library is unsafe. I proposed a rigorously safe std2, and that was rejected."
The controversy around how to make C++ safer may mean that turning to a different language is a better solution, whether that is Rust, or something else such as Google's experimental "successor to C++" [19]Carbon project , whose roadmap states that it may ship a 1.0 language "beyond 2028." ®
Get our [20]Tech Resources
[1] https://www.reddit.com/r/cpp/comments/1lhbqua/comment/mz3u7cr/
[2] https://sibellavia.lol/posts/2025/09/safe-c-proposal-is-not-being-continued/
[3] https://www.theregister.com/2024/09/16/safe_c_plusplus/
[4] https://www.reddit.com/r/cpp/comments/1lhbqua/comment/mz76sat/
[5] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/applications&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=2&c=2aMmJlxm0SIF9kGGcYw5uuAAAAsk&t=ct%3Dns%26unitnum%3D2%26raptor%3Dcondor%26pos%3Dtop%26test%3D0
[6] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/applications&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44aMmJlxm0SIF9kGGcYw5uuAAAAsk&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[7] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/applications&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=3&c=33aMmJlxm0SIF9kGGcYw5uuAAAAsk&t=ct%3Dns%26unitnum%3D3%26raptor%3Deagle%26pos%3Dmid%26test%3D0
[8] https://isocpp.org/std/standing-documents/sd-10-language-evolution-principles
[9] https://www.theregister.com/2025/09/15/full_mcp_support_in_beta_chatgpt/
[10] https://www.theregister.com/2025/09/11/microsoft_dotnet_10/
[11] https://www.theregister.com/2025/09/10/visual_studio_2026_previewed_deeper/
[12] https://www.theregister.com/2025/09/09/atlassian_will_go_cloudonly_customers/
[13] https://github.com/BjarneStroustrup/profiles
[14] https://devclass.com/2025/05/09/interview-bjarne-stroustrup-on-21st-century-c-ai-risks-and-why-the-language-is-hard-to-replace/
[15] https://old.reddit.com/r/programming/comments/1nhwalt/safe_c_proposal_is_not_being_continued/nehmhz2/
[16] https://www.circle-lang.org/draft-profiles.html
[17] https://news.ycombinator.com/item?id=45239170
[18] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/applications&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44aMmJlxm0SIF9kGGcYw5uuAAAAsk&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[19] https://github.com/carbon-language/carbon-lang
[20] https://whitepapers.theregister.com/
Pretty sure that cont pointers and const refs are pretty close to viral annotations - const correctness is a PITA if some low level thing guarantees not to mutate something it is passed in the documentation but not in the API. Especially those things that have APIs where the mutating and non mutating version of the code are differentiated only by a passed flag.
Rust is the future
The C++ language will never be regenerated to become memory-safe since there's too much legacy code out there and most users are unwilling to accept a performance penalty, how slight, to attain it.
Therefore the entire world's codebase will need to be rewritten in Rust, which is the future. Luckily oodles of code is currently being written in it, so the transformation is happening faster than previously thought.
“we should avoid requiring a safe or pure function annotation that has the semantics that a safe or pure function can only call other safe or pure functions”
I have no axe to grind one way or the other on this - I’m happy to continue my slow despair at the state of C++ and the multitude of kitchen sinks that get thrust into it every 3 years to the point where I am literally giving up on it - BUT why is the above assertion any different from requiring a contexpr to ONLY be able to call (for very good reasons) on other conexpr-s?