At BerlinSides 0x7dc, Mlp and Thequux debuted Hammer, a C library for writing input handlers as formal parsers in proper langsec style. They were soon joined by Pesco, and developed the simple packrat prototype into a multiple-backend master of the parsing arts, capable of handling everything from regular languages to parsing expression grammars with clarity and rigour. The team has been hard at work, with help from volunteers in the open-source community, on bindings for Java, C#, C++, Go, Python, PHP, Perl, and Ruby, and now we're gearing up for our next step: Tongs, a BSD-licensed standard library of reference implementations of dozens of commonly used protocol and message formats.

We're thinking things like:

  • Network message formats (HTTP, DNS, TCP, ICMP, UDP, IPv4, IPv6, ARP...)
  • Common encodings (urlencoding, base64, bencoding ...)
  • Common data storage formats (CSV, XML ...)
  • Configuration file formats (INI, too many others to list)
  • Markup formats (Markdown, HTML ...)
  • Compression formats (ZIP, bzip2, 7z ...)
  • Image file formats (TIFF, JPG, PNG, GIF ...)
  • Object/Executable file formats (PE, ELF, Mach-O, bytecode for various languages)
  • Audiovisual file formats (mp3, avi, OGG, FLAC ...)

Stop by Milliways, meet the devs, learn how to write your own parsers, and help us implement the parsing library of the future!

The Hammer and Tongs Code of Conduct is as follows: *Disruptive behaviour will be met with defenestration.*