All Projects → djspiewak → Anti Xml

djspiewak / Anti Xml

Licence: other
The scala.xml library has some very annoying issues. Time for a clean-room replacement!

Programming Languages

scala
5932 projects

================================== Anti-XML: The Non-Violent Solution

Documentation and usage can be found at http://anti-xml.org

Anti-XML is a proposed replacement for the scala.xml package in the Scala standard library. The standard package is outdated and beyond fixing. We need to start over, on solid foundations and unburdened by backward compatibility. Anti-XML aims for quality in three major areas:

  • Usability

    • Leverage powerful ideas like combinators and proper ADTs_
    • Leverage the 2.8 collections library
    • Provide consistent selector behavior
    • Avoid these missteps: Node <: NodeSeq <: Seq[Node], MetaData, Atom[String]
  • Reliability

    • Use immutable data structures (in the API and under the hood too)
    • Avoid bugs and race conditions
    • Provide a proper equals
  • Performance

    • Lower memory usage (Novell Vibe_ once had a 16 MB chunk of XML use 250 MB of heap!)
    • Provide efficient selectors

We are exploring many ideas_ for this project. It will be interesting to see where things go!

.. _ADTs: http://en.wikipedia.org/wiki/Algebraic_data_type .. _many ideas: http://dl.dropbox.com/u/1679797/anti-xml-todo.html .. _Novell Vibe: http://vibe.novell.com

Usage

The Maven artifact descriptor for the latest stable version of Anti-XML is as follows: com.codecommit:anti-xml_2.9.1:0.3. We also regularly push -SNAPSHOT releases to the Scala-Tools_ "snapshots" repository, for all five of you who like to live dangerously. You should be able to use this descriptor to easily add Anti-XML as a dependency to any project with a Maven-compatible build system (Maven, Buildr, SBT, Gradle, Ivy, etc). The stable artifacts themselves are hosted in the Scala-Tools_ "releases" repository. For reference, here are a few copy/paste snippets you can use for some of the common build systems.

SBT::

val antiXML = "com.codecommit" %% "anti-xml" % "0.3"

Buildr::

compile.with "com.codecommit:anti-xml_#{Scala.version}:jar:0.3"

Maven2::

<dependency>
  <groupId>com.codecommit</groupId>
  <artifactId>anti-xml_2.9.1</artifactId>
  <version>0.3</version>
</dependency>

Supported Versions of Scala

Anti-XML is cross-built_ for the following Scala versions:

  • 2.9.1
  • 2.9.0-1
  • 2.9.0

Support for the 2.8.x stream is being dropped in version 0.3. It is believed that 2.9.x has had sufficient time to mature and there is very little reason to continue to work with 2.8.1. However, if there is demand for a 2.8.1 (or 2.8.0) compatible release, open an issue and I will manually build a JAR for the appropriate version.

.. _cross-built: http://code.google.com/p/simple-build-tool/wiki/CrossBuild .. _Specs2: http://etorreborre.github.com/specs2/ .. _ScalaCheck: http://code.google.com/p/scalacheck/

Documentation

Usage information, examples, performance results and more can be found on the Anti-XML website: http://anti-xml.org

Contributing

Contributions are most welcome! Fork, hack, request pull, rinse and repeat. If you're looking for things to work on, I would check the issue tracker_ or the official TODO list. However, before you get started, be sure to read the information in CONTRIBUTING.rst. It offers some basic code guidelines (don't worry, curly braces aren't a religious issue here) and explains the legal mumbo-jumbo involved in contributing.

.. _issue tracker: .. _official TODO list: http://dl.dropbox.com/u/1679797/anti-xml-todo.html .. _CONTRIBUTING.rst: anti-xml/tree/master/CONTRIBUTING.rst

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].