waxeye-org / waxeye

Waxeye is a parser generator based on parsing expression grammars (PEGs). It supports C, Java, JavaScript, Python, Racket, and Ruby.
https://waxeye-org.github.io/waxeye/index.html
Other
235 stars 38 forks source link

Release Policy #106

Closed mkohlhaas closed 2 years ago

mkohlhaas commented 4 years ago

The last release has been six years ago. What is the release policy of the project? Would be advantageous to have it eg. in Void Linux. But Void Linux only allows packages from official releases.

Awesome project!

glebm commented 4 years ago

I can tag a release here but I don't have access to publish waxeye runtime packages, such as https://www.npmjs.com/package/waxeye, https://rubygems.org/gems/waxeye, https://pypi.org/project/waxeye, etc. @orlandohill, can you publish these or give me access? Thanks

mkohlhaas commented 4 years ago

Hi Gleb,

thanks for your support. Racket should also be deployed to the Racket packages repository: see also no racket pkg #87. With raco it should be relatively easy to do. For docs see Official raco documentation and Raco package tutorial.

orlandohill commented 4 years ago

Hi Michael, thanks for suggesting this. I'll start releasing new versions later this month. I'll deploy Waxeye to the Racket Package Index, and do likewise for the other languages that have package repos.

bkil commented 4 years ago

I look forward to an update too. The stable version has a nasty bug that works correctly in the online version: Consider this grammar:

A <- B *'a' 'x'
B <- ?(*'a' 'b')

# This is an ugly workaround:
# B <- ?(&(*'a' 'b') *'a' 'b')

And these tests:

(A

"x"
(A (B) #\x)

; Why is this parsed to `(A (B a) x)`?
"ax"
(A (B) #\a#\x)

; Why is this parsed to `(A (B a a) x)`?
"aax"
(A (B) #\a#\a#\x)

"bx"
(A (B #\b) #\x)

"abx"
(A (B #\a#\b) #\x)

"aabx"
(A (B #\a#\a#\b) #\x)

"abax"
(A (B #\a#\b) #\a#\x)

"abaax"
(A (B #\a#\b) #\a#\a#\x)

)
orlandohill commented 4 years ago

Hi Thomas,

Thanks for reporting this bug!

There were some big delays on my end, but I'm back to development now.

As a rough schedule, I'm aiming to release a new version this month that just supports Racket, and then add support for an additional language every 1-2 weeks.

The order would be something like the following:

I'm not sure how much priority to give C/C++ and HaXe in the short term.

bkil commented 4 years ago

Sounds nice. I'm using Java/Scala at the moment, and Python may come in handy for my peers.

I also wanted to test performance via C/C++ out of curiosity, but unfortunately Unicode literals spoiled the generated code.

orlandohill commented 4 years ago

Thanks, that's helpful to know!