sentry-native
cJSON
sentry-native | cJSON | |
---|---|---|
2 | 15 | |
367 | 10,049 | |
1.9% | - | |
7.8 | 5.5 | |
2 days ago | 4 days ago | |
C | C | |
MIT License | MIT License |
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.
sentry-native
-
Luau Goes Open-Source
I understand what C bindings means - hence my comment about the lowest common denominator. I'm not deeply familiar with the Lua api so I don't feel comfortable commenting on it, but the sentry C api is a prime example. Yes you can use this API from many different languages, including C++, but you end up writing code like this. You almost always lose type safety, RAII, and introduce error prone, verbose code, such as: sentry_value_t debug_crumb = sentry_value_new_breadcrumb("http", "debug crumb"); sentry_value_set_by_key( debug_crumb, "category", sentry_value_new_string("example!")); sentry_value_set_by_key( debug_crumb, "depth", sentry_value_new_int32(11)); sentry_value_set_by_key( debug_crumb, "level", sentry_value_new_string("debug")); sentry_add_breadcrumb(debug_crumb);
-
Goodbye C++, Hello C
> Put another way, I'd rather fix relatively simple C (which also tends to be simpler code in general) than the monsters created by "modern C++" because they thought the "added safety" would mean they could go crazy with the complexity without adding bugs.
It's completely possible to write C++ code without it being a mess of a template mostrosity and massively overloaded function names. People who write C++ like that would write C filled with macros, void pointers and all the other footguns that C encourages you to use instead.
I've been working with the sentry-native SDK recently [0] which is a C api. It's full of macros, unclear ownership of pointers (in their callback, _you_ must manually free the random pointer, using the right free method for their type, which isn't type checked), custom functions for working with their types (sentry_free, sentry_free_envelope), opaque data types (everythign is a sentry_value_t created by a custom function - to access the data you have to call the right function not just access the member, and this is a runtime check).
Compare [1] (their C api example)
[0] https://github.com/getsentry/sentry-native
cJSON
-
Botlib: Telegram Bots in C by Antirez
It’s a library he’s including directly. It’s the same.
https://github.com/DaveGamble/cJSON
- Made a web app (URL Shortener )in C
- l
-
A good C library to parse json data
a quick google search is always easier than a whole reddit post cJSON
-
jemi: a compact JSON serializer for embedded systems
This is quite similar to cJSON, although cJSON leans more towards dynamic memory allocation.
-
Is there a de facto standard JSON library for C?
If 'de-factoness' (urgh) was measured in GitHub stars, then https://github.com/DaveGamble/cJSON would win.
- cJSON can't parse strings with a zero character in it, because strings are zero terminated in this api. But doesn't that make it absolutely useless for production? Like, one /0 and my programs crashes/can't parse? Why can't it be escaped?
- CJSON – Ultralightweight JSON parser in ANSI C
-
Luau Goes Open-Source
You often end up with cases where you have to manually call the correct free function for the type you're using, again completely untyped - e.g. if I'm using both sentry and cjson, then my function will ook something like this:
-
A tiny json parser for study.
Nice how would you compare this to DaveGambles cJSON? https://github.com/DaveGamble/cJSON (which I what I currently use)
What are some alternatives?
breakpad - Mirror of Google Breakpad project
json-c - https://github.com/json-c/json-c is the official code repository for json-c. See the wiki for release tarballs for download. API docs at http://json-c.github.io/json-c/
GSL - Guidelines Support Library
Jansson - C library for encoding, decoding and manipulating JSON data
score-simple-api-2
ArduinoJson - 📟 JSON library for Arduino and embedded C++. Simple and efficient.
tl - The compiler for Teal, a typed dialect of Lua
JSMN - Jsmn is a world fastest JSON parser/tokenizer. This is the official repo replacing the old one at Bitbucket
CppCoreGuidelines - The C++ Core Guidelines are a set of tried-and-true guidelines, rules, and best practices about coding in C++
RapidJSON - A fast JSON parser/generator for C++ with both SAX/DOM style API
sentry-dart - Sentry SDK for Dart and Flutter
JsonCpp - A C++ library for interacting with JSON.