Great news! As someone who's moving back to a C++ job after having worked with Rust for several years now, the error message parsing is one of the things I've been dreading the most... I'm still dreading it, but now sliiightly less.
Also, that interactive `-fanalyze`-output with the pointer visualisation looks super handy!
Happy to see there's still focus on the DX in GCC. C and C++ sorely needs it.
This has appeared multiple times over the years as “compiler improves c++ errors” and is even the reason given as motivating things like concepts. Sure it keeps improving but the errors don’t seem to actually get smaller. The problem is inherent to templates - c++ got it wrong by having templates start weakly typed and it has no mechanisms to correct it in the language - concepts helped but didn’t definitively fix it and also are a serious level of complexity (ie for writing and defining concepts) - it just shifted the burden one level but ultimately the mess is still there.
After more than 20 years in c++, I gave up that the situation will ever really be fixed vs constantly being made better at the margins, but not as fast as new ideas get added to the language.
You're not wrong there. The late stage (compilation wise) of template instantiation doesn't help either, as so much context has been built up. The art of debugging C++ compiler output is knowing which 90% to ignore. If you read it all you'll simply go mad.
Concepts at least tells you which criteria you didn't satisfy (as long as the concept is correct...), which - admittedly - feels like putting a bandaid on bullet wound.
Even without having concepts, a cpp compiler could conceivably detect at definition time that the template is acting as a generics declaration only, and treat it specially as if it was a "late-bound concept". That would potentially help with codegen, but it would certainly help with making compile errors better. I find it is hard to convince compiler engineers to divorce themselves from what the language semantics are and what the compiler does. As long as the user visible behavior is the same, you can internally handle things differently for conceptually this same feature.
Rust has the same problem as templates with macros. We haven't had a strong need to customize the macrosl evaluation much, but I could very much see us special casing macros that are function like, or have macro arms that can only be a handful of things in order treat them different so diagnostics get better. The only thing that comes to mind thar we do today, is that when a macro call falls through (no macro arm matches), we retry it adding commas in between expressions to see if it was just a typo.
Concepts could be much better, but first we only got the light version, and secondly the effort hasn't been there regarding improving the error messages.
Also, so far I would say they haven't been getting people rushing out to use them anyway, as C++20 is still too new for many projects.
Even GCC only now changed to C++20 as default mode.
Concepts support (like traits I'm Rust) is necessary for good diagnostics, but not sufficient. It gives you the architecture and metadata that you require to infer what the user wants, but a lot of additional analysis on the decision chain that was followed in order to figure out what is relevant and what isn't.
Also the C++ 20 "Concepts Lite" isn't a nominal system like Rust's traits (or like the C++ 0x Concepts proposal which Bjarne had ripped out), it's Duck typing again and so it's harder even if the work was done.
Rust can say hey, this code treats Mallard as if it's a Duck, did you mean for this Mallard to implement Duck? If so, try writing #[derive(Duck)]
But for Concepts Lite the compiler needs to guess that you wanted Mallard to match this requirement that Ducks can quack, and observe that Mallard's quack has a slightly wrong signature so it doesn't match and so that's probably the mistake.
The problem isn't C++, the problem is that the meagre resources those teams have available, rather spend their time catching up to ISO C and ISO C++, than improving error messages.
Hence why SARIF has seen big adoption, as they hope that by exposing that , there are others ways to have others have tools that process SARIF.
C++ has way more resources than almost any other language. There are or were teams from Microsoft, Google, Apple, and Bloomberg who work on the compiler. Lots and lots of man hours have been spent and I’d say wasted. The problem is C++ the ISO committee and that is the language essentially.
They had a chance in c++11 - we’re going to make a modern c++ that fixes the old problems. And for a time that was true. But they’ve completely lost their way again and getting caught flat footed when the US government recommended people stop using c++ and instead of figuring out how to fix the language they doubled down on unworkable ideas that don’t meaningfully improve the situation.
I think the advice will be to run fil-c in production and then c++ will have an issue as to just what it’s identity is because in practice it will be significantly slower than alternative approaches.
Most of the companies that you named, nowadays don't care about C++ as much as you think.
The work in clang and GCC is mostly done by volunteers, big names like Apple and Google rather focus on LLVM itself for their languages.
Microsoft seems to have layed off quite a few people, and is mostly focused on keeping it going for existing projects, in the context of games, as second language paired with .NET, CPython and JavaScript runtimes.
The last framework they published (C++/WinRT), its baseline is C++17, with no plans to upgrade it.
They just released an updated memory model for C# for low level coding that should be competitive with Swift and Rust unsafe models.
While the new error message pinpoints the location of the error better, you have to dig through so much text to find it. Why not have a verbose mode that you can turn off so you only get the last trace of the error message? clippy does this so well, plus you get a suggested fix
SARIF is machine readable. An editor (or a shell filter if you prefer it that way) would allow hierarchically inspecting the output at the desired detail level. The article shows nested overload candidates that could be potentially be collapsed, for example.
Bambu showed their true colours last year when they would've eliminated offline access altogether if not for public outrage. You don't own your Bambu printer, you're leasing it at a subsidised premium.
This move does not surprise me at all, and I'm genuinely happy that Louis is willing to shell out money to help those that can't defend themselves.
I'm happy that Bambu finally made Prusa care, but I will not cheer them even if they consistently innovate. It's just sad.
I bought a Prusa several years ago that I had a rollercoaster of feels on. It's reliable, works great, but also cost me $900. For the next 3 years or so I was wondering whether I should have just bought a $250 Bambu and gotten almost same results. Now I'm happy I didn't.
Both friends with Bambu printers bought them because they were cheaper than Prusa, and they wanted "a tool, not a hobby" (which I think is marketing invented to disparage an open source, repairable printer).
Three years later, they have unreliable printers that are difficult to maintain.
I have a five year old Prusa, still working very nicely, and it's still a tool and not itself a hobby.
Prusa are clearly tools: you can fix it, modify it, and still have warranty apply. You can get after-sales parts, and service.
Bambu are appliances. They can work great out of the box, but appliances do not have upgrade paths. You do not upgrade a microwave, you throw it out and get a new one. Or maybe it's more like a fridge, you can limitedly repair some bits, but you cannot wholesale upgrade from V1 to V2.
Anyways bought the core one a few months ago, on kit, and did the whole assembly. The assembly was fun, and the resulting printer has been great. The print fails I had were all easily understandable, entirely due to adhesion issues to a dirty print plate.
I also ordered the indx and am looking forward to capabilities that are not possible with the AMS system. I'm more of an artist though, so I'm looking for interesting and cool ways to make things, not just 3D printing figurines or sculptures etc.
I have four Prusa printers for my business with thousands of hours of print time. The worst issue that I have had is a finicky filament sensor that I temporarily disabled until I could fix it.
I see it as buying printers design for industrial usage versus printers for hobby. Prusa is selling me a tool that just works every time.
I'm not sure if he still does it, but last time I checked he maintains a giant warehouse of these things in Prague that assemble themselves. That's the biggest advertisement for their industrialness that you can make - the printer literally manufactures itself in an industrial setting.
Without looking it up I’m guessing I’ve had my P1S for 3 or more years and I’ve never had a single issue with it, to the point where I wonder what issues your friends have?
And the yet again I got told over and over again that Bambu didn't really mean to, and if they did they learned their lesson, and after all you can still keep them offline. And spending more for a prusa obviously is silly.
I'm really getting too old dealing with morons who didn't learn anything after the same patterns repeating for decades now.
I'm honestly not getting the complaint here. Bamboo Lab forced competitors to step up and actually produce good products. Now that there are many Bamboo Labs competitors you are no longer dependent on Bamboo Labs anymore.
I'd love for this pattern to repeat for eternity.
If anything this is the good ending to the story. The rise and fall of a giant.
That was an impressively stupid and/or lazy fuck up, to a point where I think Jones could have a lawsuit against his attorneys there.
IANAL but it does seems like "sending an entire copy of your clients phone and making no effort to redact it" could be a thing that, you know, is bad counsel.
No, the lawyers can argue about the scope of what they show the jury during trial. There are plenty of rules against biasing or inflaming the jury with unrelated material.
Thumbs up for both of them, but I must say that DeltaHedra has become my new favourite FreeCAD content creator. Especially after he started using his own voice. His old content was good, but his current his magnifique! The quality of the content he pushes is above and beyond.
LinkedIn is a masquerade ball dressed up as a business oriented forum. Nobody is showing their true selves, everyone is either grinding at their latest unicorn potential with their LLM BFF or posting a "thoughtful" story that is 100% totally real about a life changing event that somehow turns into a sales pitch at the end...
I short the stock of companies whose leadership is wasting time posting to LinkedIn instead of… y’know… leading their org. The more they post the more I short. Similarly, the less-attached-to-reality the post is the more I short.
I wish I could say I’m making bank off this strategy - but pretty-much all the slopposters (and the most insufferable of the AI boosters) are all working for nonpublic firms, oh well.
Maybe not a winning strategy because a lot of public companies have a comms team that manages the CEO’s LinkedIn. Thereby saving the valuable time of the CEO themselves.
In the meanwhile, the exploit.in thread where this phishing kit is advertised is just full of users making fun of the author for selling vibecoded garbage. One user seems to have paid for the phishing kit, and says it just doesn't work at all and says the author blocked him on telegram after he complained.
It's a marketing piece hyping up a phishing kit that doesn't exist. Krebs gave up a long time ago, if he gave a shit he'd be more than capable of going on these forums to try and verify this story before uncritically repeating AI company marketing materials.
> LinkedIn is a masquerade ball dressed up as a business oriented forum. Nobody is showing their true selves
That's the main trait of almost all social media. A parade of falsity, putting on the show for everyone else, being what you wish you were and what everyone else dreams of being or envies.
LinkedIn is about boasting and boosting the professional life, other social media is for the personal life. More or less equally fake.
This seems fair, tbh. And I fully agree on the policy for issues/discussions/PRs.
I know there will probably be a whole host of people from non-English-speaking countries who will complain that they are only using AI to translate because English is not their first (or maybe even second) language. To those I will just say: I would much rather read your non-native English, knowing you put thought and care into what you wrote, rather than reading an AIs (poor) interpretation of what you hoped to convey.
I am quite obviously blind, but I still stand by my sentiment. I would rather have a "bad" but honest PR body than a machine translated one where the author isn't sure about what it says. How will you know if what it says is what you meant?
As a native english speaker I don't run into this problem, but in the context of a PR do you think having the original native PR documentation alongside the machine translated documentation would have a similar problem?
That works fine with office buildings and stuff where a company is redistributing its risk profile, but not when the company it’s selling to has every incentive to kill the asset as a competitor.
Also, that interactive `-fanalyze`-output with the pointer visualisation looks super handy!
Happy to see there's still focus on the DX in GCC. C and C++ sorely needs it.
reply