Herbie 1.0 Release Notes
After two years of work, the Herbie developers are
excited to announce Herbie 1.0! This is the first release of
Herbie, marking its transition from research software to a tool
for scientists and engineers to improve the accuracy of their
floating point software.
Herbie automatically improves the accuracy of floating point
expressions. This avoids the bugs, errors, and surprises that so
often occur when working with floating point. Since
our PLDI'15 paper, we've been hard at
work making Herbie more versatile and easier to use.
Usability improvements
- A switch to the standard FPCore input
format. This makes it easy to use Herbie together with other
floating point tools,
like Herbgrind.
- A web demo, which makes it easy to try
out Herbie and also gives us a sense of what problems people are
trying to solve using Herbie.
- Easier installation.
We've removed dependencies on several external libraries, upgraded
to the latest versions of Racket, and eliminated a confusing
linking step.
- OS X support. We've tracked down several bugs that prevented
Herbie from working on OS X.
- Support for more functions. Every function available
in math.h
is supported, and some additional functions from GNU libc are as
well.
- Docker support for Herbie. You can
now use the popular container tool to make installation even
easier.
- More informative report pages, visible in the web demo, which
makes them more useful both for users and for debugging. In
particular, the new graph gives a quick overview of how Herbie did
on a collection of inputs.
- Make it possible to toggle rulesets
in Herbie.
- A new entry point into Herbie, cleaning up a haphazard
collection of different scripts.
- New website!
Improvement to core algorithm
- Herbie is now faster! A new measurement infrastructure helped
us track down some time sinks.
- Bounds on variables. You can now specifiy bounds within which
to sample variables.
- Branch on expressions. Herbie can now sometimes infer
conditionals that use expressions, not variables, to determine
which expression to use.
- Support expansions around ±∞ in Taylor expansions. The
framework behind this should eventually make it possible to
support Puiseux series as well.
- Simplify expressions such as
(exp 1)
or (cos PI)
, by supporting symbolic constants in the
simplification algorithm.
- Faster Taylor series routine. Several large tweaks have helped
make Taylor series orders of magnitude faster, which has sped up
Herbie.
Code Cleanup
- Use a proper parser for input files. We used to use a bizarre
system of
eval
ing input files and poking around
global storage for the results.
- Many crashes fixed. Herbie is stabler than ever!
- A new debugging and logging system, which makes Herbie
debugging from the REPL significantly easier
- A new measurement system that lets us see where Herbie spend
its time. This has helped speed up Herbie.
- A new implementation of the Herbie main loop, which is much
easier to work with in the debugger.
- Unit tests and more integration with the Racket toolchain.
- A fuzzer for Herbie, which has allowed us to track down many bugs.
Try it out!
We're excited to continue to improve Herbie and make it more
useful to scientists, engineers, and programmers around the world.
We've got a lot of features we're excited to work on in the coming
months. Please
report bugs,
join
the
mailing list,
or contribute.
If you find Herbie useful, let us know!