[CDRIVER-1370] Replace libyajl with jsonsl Created: 11/Jul/16 Updated: 22/May/18 Resolved: 13/Dec/16 |
|
| Status: | Closed |
| Project: | C Driver |
| Component/s: | json, libbson |
| Affects Version/s: | None |
| Fix Version/s: | 1.6.0 |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | A. Jesse Jiryu Davis | Assignee: | A. Jesse Jiryu Davis |
| Resolution: | Done | Votes: | 0 |
| Labels: | intern2016 | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||||||
| Description |
|
libyajl's unmaintained and overly complex for our purposes – there are a ton of JSON parsing bugs open in libbson that are very hard to fix with libyajl. We currently vendor libyajl and we've patched it to make it perform better when parsing a stream of documents, but we can't use that patch on Debian, due to Debian's policy against vendoring third-party libraries that are available as Debian packages. This puts us in a Catch-22: we can't fix upstream since upstream isn't maintained, but we can't use our patch since Debian prohibits vendoring libyajl there. We'll vendor a different JSON-parsing library that is not already packaged for Debian, that presents a simpler interface better suited to our needs, and which already performs well when parsing a stream of documents. I'd thought JSMN was good but it's not actually incremental – not suitable for parsing a very large stream of one or more JSON objects. We'll use jsonsl. It's MIT licensed, actually designed for incremental parsing with callbacks, seems complex but good, not in Debian (which is good news). Local benchmarks show between 1% and 15% gain on the JSON portions of the Driver Benchmark Suite with the first draft of a JSONSL port. Status:
|
| Comments |
| Comment by Githook User [ 22/May/18 ] |
|
Author: {'username': 'jmikola', 'name': 'Jeremy Mikola', 'email': 'jmikola@gmail.com'}Message: Remove YAJL include path for Windows builds YAJL was removed in libbson 1.6.0 ( |
| Comment by Githook User [ 07/Apr/17 ] |
|
Author: {'username': 'ajdavis', 'name': 'A. Jesse Jiryu Davis', 'email': 'jesse@mongodb.com'}Message: Re-applied after reverting our changes to jsonsl.h and jsonsl.c. |
| Comment by Githook User [ 07/Apr/17 ] |
|
Author: {u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}Message: Re-applied after reverting our changes to jsonsl.h and jsonsl.c. |
| Comment by Githook User [ 02/Feb/17 ] |
|
Author: {u'username': u'jmikola', u'name': u'Jeremy Mikola', u'email': u'jmikola@gmail.com'}Message: Includes |
| Comment by Githook User [ 13/Dec/16 ] |
|
Author: {u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}Message: |
| Comment by Githook User [ 07/Dec/16 ] |
|
Author: {u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}Message: |
| Comment by Githook User [ 07/Dec/16 ] |
|
Author: {u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}Message: |
| Comment by Githook User [ 07/Dec/16 ] |
|
Author: {u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}Message: |
| Comment by Githook User [ 07/Dec/16 ] |
|
Author: {u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}Message: |
| Comment by Githook User [ 07/Dec/16 ] |
|
Author: {u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}Message: |
| Comment by Githook User [ 07/Dec/16 ] |
|
Author: {u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}Message: |
| Comment by Githook User [ 07/Dec/16 ] |
|
Author: {u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}Message: |
| Comment by Githook User [ 07/Dec/16 ] |
|
Author: {u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}Message: |
| Comment by Githook User [ 07/Dec/16 ] |
|
Author: {u'username': u'ajdavis', u'name': u'A. Jesse Jiryu Davis', u'email': u'jesse@mongodb.com'}Message: |