Promising to be the main face-to-face event for all things Boost, BoostCon 2010 opens the door to your C++ future. From using the Boost libraries to writing and maintaining them, from evangelizing to deploying Boost within your organization, from infrastructure and process to vision and mission, and from TR1 to TR2, BoostCon brings together the sessions, the colleagues, and the inspiration to support your work with Boost for the next year.
To reflect the breadth of the Boost community, the conference includes sessions aimed at two constituencies: Boost end-users and hard-core Boost library and tool developers. The program fosters interaction and engagement within and across those two groups, with an emphasis on hands-on, participatory sessions.
We’d love to see you all there! BoostCon, from 2007, has always been a meeting place of Spirit folks. It has been the place where we meet eye to eye and discuss Spirit related events, future plans and road maps, using the library, etc. This year, 3 Spirit related talks were accepted:
Using Spirit 2.1 : Qi and Karma
By Michael Caisse
Machinery, sensors, equipment, client/server communications, even file formats… Parsing and producing communication streams is everywhere you look. Often these tasks are simple or small enough to tempt ad-hoc solutions. The Spirit 2.1 library provides a model that is simple enough to tackle those “quick hacks” and easily scales for full-featured AST generation.
This session will explore real-life experiences with the parser and generator (Qi/Karma) portions of the Spirit library. As we look at various small and medium-sized parsers/generators employed in various products we will establish some “rules-of-thumb” and guidelines for tackling the parser/generator domain with Qi/Karma. The session will end with the implementation of a usable XML parser and a simplified XPath-like node extractor.
The session will include some lecture and a lot of tutorial. Attendees will walk away with the knowledge and tools to begin parsing and generating with Spirit Qi/Karma.
By Joel de Guzman and Hartmut Kaiser
One allure of Boost Spirit Parser, compared to traditional parser generators, is its being embedded in C++. The user of the library specifies a parser’s grammar directly in C++ code using expression templates. There are distinct advantages with this approach, but there are problems as well. The most glaring drawbacks are 1) long compile times and 2) difficult to understand error messages and 3) Difficulty in debugging and testing parsers. For small parsing tasks, these can be tolerated. Yet, after 8 years in active deployment, we’ve come to a point where Spirit is being used in increasingly more complex parsing tasks. 2 and 3 can somehow be alleviated by adding more “smarts” to the expression template engine (using Proto), but that would increase compile times further to the point where the libary will no longer be useful.
It would be interesting to have a tool (both stand-alone or library based) that accepts textual EBNF/PEG expressions and outputs either parsers that are immediately executable or C++ Boost Spirit code. The RAD tool can have all sorts of smarts to make writing parsers as painless as possible (e.g. debugging, error handling, analysis, etc). After the development of the parser is “set in stone”, one can opt to have the tool emit C++ code that can then be included in an application. For more complex parsers, this will be a definite boon.
We would like to present the design and development of such a tool. Obviously, this “Dynamic Spirit” tool will be written using “static” Spirit. This would be a practical real world example using Spirit.
Spirit History and Evolution
By Joel de Guzman and Hartmut Kaiser
This year, we celebrate Spirit’s 10th anniversary from its early beginnings as an offshoot of a much larger GUI library in the 90s and debuted into Boost in May 2001 in the typical “Is there interest in this library?” fashion like all would be Boost libraries. From a humble 7 header file library, Spirit has grown to be one of the most sophisticated Boost libraries and along the way became the incubator of other Boost libraries such as Boost.Fusion, Boost.Phoenix, Boost.Wave and Boost.Proto.
We would like to present Spirit (and the libraries it inspired) in a historical perspective. The presentation will aim to provide a lighter, more intimate perspective into the development of at least 4 libraries with almost a decade’s worth of experience being Boost authors and bonafide crazy template metaprogrammers who abuse operators like Mad Scientists. Of course, we can’t help it if we show off some C++ tricks here and there, but we’ll try to keep it as light as we can.