Awesome C++ – find the best libraries
cpp.libhunt.com
cpp.libhunt.com
Here's the problem I had with my previous game project. JSON writing and parsing. I type "JSON" into your search box and get 20 libraries without much difference explained. 17 of those match my license requirements. And then I have to try each one to compare.
You might say that I could just pick one at random and see if it works... I did exactly that for my previous project. 11 months into development when I had huge chunks of code depending on it, I discovered a subtle bug that only showed up on big JSON files (over 2MB) and only when the library was compiled with MSVC. The author doesn't want to debug it because he doesn't use Windows. I wanted to use use MSVC because of Steam API. So I had to either rewrite the code to use another library or give up on SteamAPI. I picked the latter.
Dumping a list of 20 libraries to solve a single problem isn't "curating".
I suggest you remove "the best" from the title as this site doesn't solve that problem.
You could have fixed the bug yourself instead. Parsing JSON is not exactly rocket science.
You completely took that out of the context. I wrote about it to show how risky it is to pick a random library, not to complain about the author.
> But surely, the moment you integrate the random library into your project, you assumed responsibility for it.
No, you don't. Your only responsibility is your project. If the library is broken, and the original author doesn't want to fix it, it's time to evaluate whether it's easier to remove it, replace it with something else or fix it yourself. You are not obliged to fix it yourself at all. I'm sorry to disappoint you, but the world doesn't work that way.
Were you my junior, telling this to me as your project manager, I'd demand you fix the bug. The reason is - we already gained from your decision to advance the project by including the external work, and at the moment you included it in your project you accepted responsibility for the issue. Failing to take responsibility for this code, whether you wrote it or not, would be a major distraction from the task, and thus does not reflect positively on you as a developer...
https://github.com/anhero/JsonBox
To give some credit to libhunt.com, they don't even list it :)
He was asking me to drill it down and basically debug his program and I simply wasn't interested in doing that.
There was a company in a roughly similar area (IIRC) called SpikeSource, co-founded by (?) Kim Polese of Sun and later Marimba. Not checked recently about them.
What would be ideal is if there was useful information about such things available right on the aggregator site -- Amazon style reviews wouldn't be too useful here tbh, ideally one would like to see multiple comparisons from people like you who tried or at least looked at a few of them.
https://github.com/fffaraz/awesome-cpp/blob/master/LICENSE
Copyright (C) 2015 Faraz Fallahi <fffaraz@gmail.com>
THE LIST IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION:
1. You just DO WHAT YOU WANT TO.A simple reason, for Swift and Rust at least, if you want that your code from today to work without changes in 10 years from now you will use C++.
Overall, while C++ indeed is fairly stable, I wouldn't bet on C++ code to be easier to drag into the future than code in those other languages (of course I wouldn't easily bet the other way, either; it's hard to know in advance with these things which will bite you the hardest.)
I have a lot of projects from 2002, 2003, 2004, 2005 and 2006 that compile and run just fine. All those use "make" as a build system.
I even have some stuff was developed using Borland's Free C++ compiler (5.5) and with a few minor fixes to #pragmas and #includes it compiles using clang and GCC.
Obviously, if you are talking about C++ code written before C++ was standardized, like in the 90's, you are probably right.
Perhaps it's a compiler issue, not a language issue; my only point is that the issue exists (and I'm not saying it was that terrible - I recommend everyone to upgrade to C++11 - just that code will not compile unchanged.)
Sister comments say that they have old C++ code that compiles just fine. Of course such code exists, I'm just saying that not all code is like that; I bet you can get there with Rust or some other reasonably stable new language if you program conservatively enough. Also a big question is what platform your code runs on; if you've targeted gcc since forever and you don't use -Werror, then your code and your Makefiles will be very stable relatively to having to port to VS - even if you're not really targeting standard C++ but the dialect GNU C++. Different C++ compilers, build environments and platform libraries are very different, and it seems a safe bet that newer languages will do a better job of minimizing differences between implementations (or keeping their number small.)
Porting C++ code compiling fine under g++ to clang, for instance, is a metric ton of work (and this one I gladly wasn't involved in but I've seen others do it; again, if your C++ code ports just fine, more power to you.) And g++ and clang are much closer to each other than the average pair of C++ compilers.