Earlier quoted context omitted.
The bad news is that WIN32_EXTRA_LEAN has no effect, you have to define VC_EXTRALEAN if you want to exclude extra stuff from the MFC and VC headers. The good news is also that it has no effect. :) You can verify this for yourself by grepping the Visual Studio headers for VC_EXTRALEAN and WIN32_EXTRA_LEAN.
But it did in 2005? > VC_EXTRALEAN defines WIN32_LEAN_AND_MEAN and a number of NOservice definitions, such as NOCOMM and NOSOUND. > https://gamedev.net/forums/topic/367942-win32_lean_and_mean-...
Show HN: Using C++23 to get proper crash logs in C++ programs
91–95 of 95 posts
Re: Show HN: Using C++23 <stacktrace> to get proper crash logs in C++ programs
#92Earlier quoted context omitted.
The crashing thread might hold a lock in the memory allocator - which could either self deadlock when saving the stack trace (which certainly seems to do memory allocation and thus isn't a-signal safe), or could deadlock with the crash reporting thread which definitely allocates memory all over. I also quite doubt that std::mutex, and even more so std::condition_variable are guaranteed to be signal safe.
> I also quite doubt that std::mutex, and even more so std::condition_variable are guaranteed to be signal safe. They are not. Use sem_t for signaling . edit: also even if they where, the signal handler might wait forever for a mutex owned by the blocked thread.
Re: Show HN: Using C++23 <stacktrace> to get proper crash logs in C++ programs
#93Earlier quoted context omitted.
There's nothing wrong with the std::regex design as it is the standard. std::regex only sucks because the developers of gcc and clang never bothered to optimize it. (Too much work and they have other stuff to worry about.)
"can't be fixed without breaking ABI" sounds plausible for C++. There's generally not all that much stdc++ specific optimisation stuff in clang. There might be parts of regex that are worth implementing as compiler intrinsics, that seems to be the existing pattern for making bits much faster. The really heavy lifting you want for regex is to partially evaluate and split them. They're a separate language unto themselv…
That's the only real reason why std::regex is slow.
Re: Show HN: Using C++23 <stacktrace> to get proper crash logs in C++ programs
#94There are parts of C++ standard library that no one should ever use. The examples are: regex, iostreams, locale... My main concern - this can also become such a dead weight.
What's wrong with std::regex? Seems to work fine for me. And iostreams - they're not great. Bad programming UI, poor performance, etc. Issues abound. But should you never use them? What do you use instead? *printf methods have lots of issues too. And so does depending on Boost::format. And so does writing your own Logger/wrapping code (which is what everyone does AFAICT). locale is bad though
Re: Show HN: Using C++23 <stacktrace> to get proper crash logs in C++ programs
#95Earlier quoted context omitted.
Strings in C++ are nice, especially now that we have std::string_view, but is one of the worst pieces of the C++ standard library. - makes localization more difficult, compared to printf (localizing code is beyond awful) - makes thread safety more difficult, compared to printf (it is safe to printf/fprintf from multiple threads, simultaneously, without any extra work) - The operator overloading syntax is bad (my sens…
>The operator overloading syntax is bad In an obnoxious way. The first code someone will see of a new language is often 'hello world'. In C++, 'hello world' is an advertisement for the fact that operator overloading exists.