I have compared the two. Note however that I didn't test them, I only read the diffs, so my notes might not accurately reflect nested/complex cases.
Discarding the new features implemented in guile-json since the bundled customization and the deprecation of (json ...) macro, it seems that "json/builder.scm" is the file where most important changes are. Considering upstream guile-json: - (json-build-object ...) considers the given Scheme "native" directly as a list of pairs (that is: no conversion is done inside the procedure itself). - (json-build ...) has conditionals for checking if a given Scheme "native" is a symbol, and also for checking if it's an association list. - Inside (json-build ...), the conditional that checks if the givem Scheme object is a hash table also builds JSON documents for those cases, but instead of taking the Scheme "native" as it is, it will receive such converted to a list of pairs. Considering the bundled and customized guile-json: - (json-build-object ...) calls procedures to convert the given Scheme "native" to a list of pairs (that is: there is always a conversion made inside the procedure). - (json-build ...) has no conditionals to check for symbols and association lists specially. - Inside (json-build ...), the conditional that checks if the givem Scheme object is a hash table takes the Scheme "native" as it is. This indicates that upstream guile-json seems to have more control on what to do with each thing. However, I don't know if this really impacts GNU Artanis such that there is an unexpected behavior. From the looks of it, there might be no problem on removing the bundle. Of course, a test is preferable.
