(Done) April 16th 2025: fast-edn Bug Hunt (Round 2) #23
Replies: 5 comments 17 replies
-
|
@madclj/meetup April 16th we will host another bug hunt / hacking session on fast-edn. RSVP |
Beta Was this translation helpful? Give feedback.
-
|
I won't be able to make it on Wednesday. But I found a link to the project I was thinking of for parsing JSON really quickly: https://github.com/simdjson/simdjson. They use simd instructions to process 64 characters at a time. Here's a talk the creator gave about it: https://www.infoq.com/presentations/simdjson-parser/ |
Beta Was this translation helpful? Give feedback.
-
|
I will also be out this Wednesday, hope it's as much fun as we had last week : ) |
Beta Was this translation helpful? Give feedback.
-
|
Yes, even if I'm the only one I'm going to use the time to wrap up the code and send it upstream.
I'll order less pizza though :) Please update your RSVP by 5:30pm so I can finalize food.
…-------- Original Message --------
On 4/16/25 08:08, Sayan Sivakumaran wrote:
Seems we have two RSVPs - were we still on for today?
—
Reply to this email directly, [view it on GitHub](#23 (reply in thread)), or [unsubscribe](https://github.com/notifications/unsubscribe-auth/AACGFJC46UL4734VA4CW7TL2ZZI5XAVCNFSM6AAAAAB3ALI7XOVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTEOBVGQ3TKOA).
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
We reviewed fast-edn since we had a completely distinct set of attendees from last week (apart from me). This time we concentrated on the benchmarking methodology. fast-edn uses a benchmarking library called duti that wraps criterium. The benchmarks consist of reading successively larger files of json and edn into memory and running each algorithm over it. The json and edn parsers are tested by using equivalent data in each format. By reading the string into memory first rather than reading files, we concluded there would probably be less interference from OS-level optimizations around IO, which @sivakusayan was concerned about. @djwhitt was skeptical that fast-edn's inlining of buffered reading was faster than BufferedReader, so we looked at the general class and quickly realized fast-edn's approach was faster due to no synchronization requirements. Moving onto the hacking portion of the night: Our progress for this week, by @frenchy64 @sivakusayan @brunchboy @djwhitt: Overall PR: madclj/fast-edn#1 We did not write any new tests, in fact rerunning the generative test based on @ericnormand's original idea of removing a single character from otherwise-valid edn yielded 4 more genuine bugs related to sentinel values leaking through to results, which we also fixed. These are some of our test cases that we fixed---they all now throw instead of returning garbage: (require '[fast-edn.core :as edn])
(edn/read-string "(1])")
(edn/read-string "[)]")
(edn/read-string "#{)}")
(edn/read-string "{)}")
(edn/read-string "{) )}")
(edn/read-string "{) 1}")
(edn/read-string "{) 1 ) 2}")
(edn/read-string "{) 2 ) 1}")
(edn/read-string "{1 ) ) 2 ] 3 ] 4}")
(edn/read-string "{1 )}")
(edn/read-string "{2 ) 1 )}")The test also found that symbols starting with digits are allowed by fast-edn. This could be a bug or a documentation improvement, since fast-edn explicitly allows keywords starting with numbers (but we were skeptical that symbols deserve the same special-case since Clojure doesn't allow symbols starting with numbers). This are test cases for further investigation: (edn/read-string "#{A000/0}")
(edn/read-string "A000/0")@brunchboy suggested that we add the correct When testing these error messages, we found a suspicious but technically-ok (compared to the rest) case where a divide-by-zero was thrown by fast-edn during @djwhitt suggested we look into https://github.com/kanaka/instacheck for writing more generative tests once we're done with @ericnormand's (I think that one is still failing!). Open questions:
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
👍 to RSVP
madclj
Wednesday, April 16th, 2025
6:30 PM to 9:00 PM CT
Location
StartingBlock Madison
821 E Washington Ave 2nd floor · Madison, WI
The building will be locked, here's how to get in
At 6:30pm, please wait by the circled doors (see above) next to the statue between the two buildings. There is usually street parking, alternatively there are parking garages close by.
The doors will be locked. Between 6:30pm-7pm people will periodically check to let you in as a last resort, but please let us know when you expect to arrive ahead of time if you can't make this window.
If you are locked out, please immediately:
#clojure-madisonchannel of the clojurians slackSometimes the guard will let you in if you're lucky, tell them you are here for the Madison Clojure Meetup in the "Digital Den" classroom on floor 2. They can then call the organizers or sometimes take you up themselves.
Topic
Continuing from our previous meetup, we will learn about and hunt for bugs in fast-edn.
Schedule
6:30pm arrive, food & drink provided
7pm, start meetup
9pm end meetup
Beta Was this translation helpful? Give feedback.
All reactions