ANNOUNCE: parboiled 2.0-M1

397 views
Skip to first unread message

Mathias Doenitz

unread,
Dec 19, 2013, 4:04:46 AM12/19/13
to parboil...@googlegroups.com
Everyone,

we are happy and proud to be able to announce the availability of the first milestone release of parboiled2!
After half a year of development (including a "hot" GSoC 2013) this release brings you the following changes over parboiled 1.x:

- completely new codebase (not a single line was copied over from parboiled 1.x)
- parser code is now generated by Scala 2.10+ macros, i.e. your rule logic compiled and not interpreted (as was the case with parboiled 1.x)
- parsing speed increased by about one order of magnitude over parboiled 1.x (more improvements are coming)
- more flexible and more powerful rule DSL
- improved error reporting
- fewer dependencies, parboiled is now generally much more lightweight (code size is now 2.8 KLoC Scala, down from 7.8 KLoC Java + 1.8 KLoC Scala)

parboiled 2.0-M1 also drops a few things that were available in the 1.x series, most importantly:

- no more Java support (not coming back)
- no parse error recovery (will be added later)

Even though this release is marked as "M1" we consider it more or less feature complete.
The reason why this is not an RC yet is that the API will likely change/be extended in smaller ways before being fully finalized.

Please try it out and give us feedback!
Among other things parboiled2 will become the infrastructure for HTTP header value parsing in the new akka-http, so we need as many users as possible to put some weight on it, so it'll mature quickly.


Release Details
---------------

Since we want to avoid any conflicts when having parboiled2 as well as parboiled 1.x on the same classpath the parboiled2 classes live in a separate package `org.parboiled2`.
The maven artifact group-id however is still `org.parboiled` (this might change in the future).

parboiled 2.0-M1 is currently built against Scala 2.10.3 and available from maven central.


Documentation
-------------

We have spent some time on proper documentation right out of the gates.
Check out http://parboiled2.org and let us know what you think needs improving!


Links
-----

Website:
http://parboiled2.org

Maven repository:
http://central.maven.org/maven2/org/parboiled/parboiled_2.10/

Issue tracker:
https://github.com/sirthias/parboiled2/issues

Mailing list:
https://groups.google.com/group/parboiled-user


Thank you all and happy parsing with parboiled!

Cheers,
Mathias

PS: Since all future discussions around parboiled2 do not affect the Java users of parboiled 1.x in any way we have decided to start a new mailing list (this one) from scratch.
The old mailing list under http://users.parboiled.org/ remains available for parboiled 1.x users.

---
mat...@parboiled.org
http://www.parboiled.org

Jisoo Park

unread,
Dec 19, 2013, 9:47:50 AM12/19/13
to parboil...@googlegroups.com
Congratulations! Looking forward to benchmark results.

The codebase must be an awesome guide to macro as well :) 

Thomas Suckow

unread,
Dec 19, 2013, 11:11:44 AM12/19/13
to parboil...@googlegroups.com
+1 org.parboiled2

Lee Mighdoll

unread,
Dec 19, 2013, 12:29:31 PM12/19/13
to parboil...@googlegroups.com
Congrats, parboiled2 will quickly become the go-to library for parsing in scala.

Cheers,
Lee

Bryan Hunt

unread,
Dec 19, 2013, 7:06:29 PM12/19/13
to parboil...@googlegroups.com
Mathias,

Congratulations, that sounds cool, but the error handling was really useful to me.

It was good for performing chores like command completion.

With Parboiled 1.x, upon receiving an error, I would:

Calculate the last valid point in the AST.

Pass a suitable message containing the children of the last valid AST node

Then finally, offer a suggestion to the user via a JLine callback.

I used it in a demo CLI spreadsheet completion, here:

https://github.com/binarytemple/scala_spreadsheet/blob/master/src/main/scala/spreadsheet/parsing.scala#L84

and then here:

https://github.com/binarytemple/scala_spreadsheet/blob/master/src/main/scala/SpreadsheetCompleter.scala

Do you think I will be able to perform the same trick in the future?

Thanks,

Bryan



I used it in a project to provide code completion for a terminal spreadsheet demo.
Reply all
Reply to author
Forward
0 new messages