Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Boomerang
[go: Go Back, main page]


boomerang
lens

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:

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

floppy harmony-stable-osx-intel-binary.tar.gz 7.96 MB30 May 2008 11:45pm
floppy harmony-stable-linux-binary.tar.gz 8.29 MB30 May 2008 11:45pm

Source Distribution

We also distribute the Boomerang sources:

floppy harmony-stable-source.tar.gz 1.3 MB30 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 ]

Harmony

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.

Valid XHTML 1.0 Strict Valid CSS!
©2008 the Harmony team.
Photo by Ben McLeod, used under a Creative Commons license.