Open friendlyanon opened 1 week ago
Originally the intent was to just provide something simple that people can copy into their codebases and change to taste. We could however do this too. In that case you're right we probably want a better name. How about jart::Json
for that? Then use jart-json
as the package name? We could potentially avoid a namespace by calling the class JtJson
and then using jtjson
as the vcpkg name. I think I'm leaning towards jtjson.
I have vcpkg installed on my computer, but I've never used it before. Once we pick a name and add the necessary configs, if you tell me what commands I need to run to register the package, I'll do it.
Both shared and static are fine.
If you send a PR with a cmake config and write a github action that runs it, I'll merge it and maintain it.
Sounds good to me. I can start with creating a package for jtckdint
.
Are you sure about providing/enabling a shared library? That will require the aforementioned export macros, SO version management to denote ABI changes and the usual shared library stuff.
With the size of the code, I don't think only a static library would be much of a waste in terms of space.
Let me do the registration. You don't want to own the maintenance burden for my projects.
Good point. How about we start with only static? I assume we can always do shared later on. It's better to give contributors more freedom in the beginning to change things, wouldn't you agree?
+1. I would love to add it as a package on ConanCenter as well.
Regarding adding shared library support - you can start out simple and only support non-Windows platforms initially, which don't require export macros, and soname versioning can be tackled later as well (although adding it in CMake is as simple as setting a SOVERSION property on the library).
only support non-Windows platforms initially, which don't require export macros
Yes, you very much do if you follow platform guidelines: https://gcc.gnu.org/wiki/Visibility
But before any of that, jtckdint needs attention first: https://github.com/jart/jtckdint/commit/6764e17814750839dec1f4cc41f7be0ddcae6449#commitcomment-149115155
@friendlyanon Thanks for discovering __SIZEOF_INT128__
. That works back to at least GCC 4.8. We'll get that merged today.
@valgur I'm happy to support that package manager too. Would it be possible for me to automate this work GitHub Actions? If you could get me setup with a PR that automates publishing there, then I'll commit myself to maintaining it going forward.
Conan and vcpkg are both centralized by default. Conan uses Conan Center Index and vcpkg uses the git repo it comes with by default. Packaging something for either requires submitting a recipe (Conan) or a port (vcpkg). This requires a PR with someone reviewing and merging that. There is no automatic package creation you can script with GitHub Actions.
OK we now have:
This is more of a TODO list to make the project distributable:
double-conversion
(https://repology.org/project/double-conversion/versions)jtckdint
(https://repology.org/projects/?search=jtckdint) Vendored source diverges from upstream since https://github.com/jart/json.cpp/commit/60a4a04a55c68e3d90b6364720d96dbace44fab0jt-json-cpp
?jsoncpp
is "taken" https://vcpkg.link/ports/jsoncpp)