Boomerang is a programming language for writing bidirectional transformations called lenses. Every Boomerang program describes two functions: when read from left to right, it describes an ordinary function that maps inputs to outputs; when read from right to left, it describes a function that "computes backwards", mapping a modified output, together with the original input, to a modified input.
Lenses (and other bidirectional transformations) have been used to solve problems in a wide range of applications including: data converters and synchronizers, parsers and pretty printers, picklers and unpicklers, structure editors, constraint maintainers for user interfaces, and updateable data base views.
For more details, please see the QuickStart.src file in our distribution or consult our research papers.
Mailing List
Discussion takes place on the harmony-hackers mailing list.Personnel
Boomerang is developed by members of the Penn PLClub: Project alumni include:- Stéphane Lescuyer
- Alexandre Pilkiewicz
- Jon Moore
- Alan Schmitt
- Jeff Vaughan
- Zhe Yang
Support
Our work is supported by the National Science Foundation under the following grants:
- ITR-0113226: Principles and Practice of Synchronization
- CPA-0429836: Harmony: The Art of Reconciliation
- IIS-0534592: Linguistic Foundations for XML View Update
Boomerang is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation.
Binary Distribution
Pre-compiled binaries for Linux (x86) and OS X (x86) are available
|
| 7.96 MB | 30 May 2008 11:45pm |
|
| 8.29 MB | 30 May 2008 11:45pm |
Source Distribution
We also distribute the Boomerang sources:
|
| 1.3 MB | 30 May 2008 11:34pm |
Subversion Access
For anonymous, read-only access our Subversion repository, follow these steps:
- Store the contents of this file as ~/.ssh/harmony_key.
- Update the file's permissions: chmod 600 ~/.ssh/harmony_key
- Add the line IdentityFile ~/.ssh/harmony_key to ~/.ssh/config.
- svn co svn+ssh://harmony@eniac.seas.upenn.edu/trunk
for the "unstable" version of the code. - svn co svn+ssh://harmony@eniac.seas.upenn.edu/branches/simply-typed
for the "stable" version of the code.
Commit access for frequent contributors can be arranged.
Papers
-
Aaron Bohannon, J. Nathan Foster, Benjamin C. Pierce, Alexandre Pilkiewicz, and
Alan Schmitt.
Boomerang: Resourceful Lenses for String Data.
In ACM SIGPLAN-SIGACT Symposium on Principles of
Programming Languages (POPL), San Francisco, California, January 2008.
[ bib | tech report | short version ] -
Sanjeev Khanna, Keshav Kunal, and Benjamin C. Pierce.
A Formal Investigation of Diff3.
In Arvind and Prasad, editors, Foundations of Software
Technology and Theoretical Computer Science (FSTTCS), December 2007.
[ bib | short version ] -
Aaron Bohannon, J. Nathan Foster, Benjamin C. Pierce, Alexandre Pilkiewicz, and
Alan Schmitt.
Boomerang: Resourceful Lenses for String Data.
Technical report, Dept. of CIS, University of Pennsylvania, July
2007.
[ bib | tech report | short version ] -
J. Nathan Foster, Michael B. Greenwald, Jonathan T. Moore, Benjamin C. Pierce,
and Alan Schmitt.
Combinators for bidirectional tree transformations: A
linguistic approach to the view-update problem.
ACM Transactions on Programming Languages and Systems,
29(3):17, May 2007.
Preliminary version presented at the Workshop on Programming
Language Technologies for XML (PLAN-X), 2004; extended abstract presented at
Principles of Programming Languages (POPL), 2005.
[ bib | conference version | full version | slides ] -
J. Nathan Foster, Michael B. Greenwald, Christian Kirkegaard, Benjamin C.
Pierce, and Alan Schmitt.
Exploiting Schemas in Data Synchronization.
Journal of Computer and System Sciences, 2007.
To appear. Extended abstract in Database Programming Languages
(DBPL) 2005.
[ bib | tech report | short version | full version | slides ] -
J. Nathan Foster, Benjamin C. Pierce, and Alan Schmitt.
A Logic Your Typechecker Can Count On: Unordered Tree Types in
Practice.
In Workshop on Programming Language Technologies for XML
(PLAN-X), informal proceedings, January 2007.
[ bib | conference version | slides ] -
Aaron Bohannon, Jeffrey A. Vaughan, and Benjamin C. Pierce.
Relational Lenses: A Language for Updateable Views.
In Principles of Database Systems (PODS), 2006.
Extended version available as University of Pennsylvania technical
report MS-CIS-05-27.
[ bib | tech report | .pdf ] -
Michael B. Greenwald, Sanjeev Khanna, Keshav Kunal, Benjamin C. Pierce, and
Alan Schmitt.
Agreeing to Agree: Conflict Resolution for Optimistically
Replicated Data.
In Shlomi Dolev, editor, International Symposium on Distributed
Computing (DISC), 2006.
[ bib | tech report | short version | slides ] -
Aaron Bohannon, Jeffrey A. Vaughan, and Benjamin C. Pierce.
Relational Lenses: A Language for Updateable Views.
Technical Report MS-CIS-05-27, Dept. of Computer and Information
Science, University of Pennsylvania, December 2005.
[ bib | .pdf ] -
Benjamin C. Pierce, Alan Schmitt, and Michael B. Greenwald.
Bringing Harmony to Optimism: A Synchronization Framework
for Heterogeneous Tree-Structured Data.
Technical Report MS-CIS-03-42, University of Pennsylvania, 2003.
Superseded by MS-CIS-05-02.
[ bib | tech report ]
Talks
-
Benjamin C. Pierce.
The Weird World of Bi-Directional Programming, March 2006.
ETAPS invited talk.
[ bib | slides ] -
J. Nathan Foster.
Exploiting Schemas in Data Synchronization, June 2005.
Talk given at New England Programming Languages Symposium (NEPLS),
Williamstown, Massachusetts.
[ bib | slides ] -
Benjamin C. Pierce.
Harmony: The Art of Reconciliation, April 2005.
Invited talk at Trusted Global Computing conference, April
2005.
[ bib | slides ] -
Benjamin C. Pierce.
Combinators for Bi-Directional Tree Transformations: A
Linguistic Approach to the View Update Problem, October 2004.
Invited talk at New England Programming Languages Symposium.
[ bib | slides ] -
Benjamin C. Pierce.
Harmony: A Synchronization Framework for Tree-Structured Data,
September 2003.
Slides from a talk presented in several places (Cambridge, Edinburgh,
Philadelphia, Princeton) in Fall 2003.
[ bib | slides ] -
Benjamin C. Pierce.
Synchronize globally, compute locally, July 2002.
Keynote address at Research Day on Global Computing, EFPL,
Lausanne.
[ bib | slides ]
Miscellaneous
-
J. Nathan Foster, Benjamin C. Pierce, and Alan Schmitt.
Harmony Programmer's Manual, 2006.
[ bib | home page | .pdf ] -
Aaron Bohannon, Jeffrey A. Vaughan, and Benjamin C. Pierce.
Relational Lenses: A language for defining updateable views,
October 2005.
Poster presented at Greater Philadelphia DB/IR Day.
[ bib | .pdf ] -
J. Nathan Foster.
Harmony: A Generic Synchronization Framework for Heterogeneous,
Replicated Data, October 2005.
Poster at DB-IR Day.
[ bib | .pdf ]
Boomerang grew out of the Harmony generic data synchronizer. All of our current efforts are focused on Boomerang and on lenses for string data; older work on lenses for trees, relations, and generic scheme-directed data synchronization is archived here.