• This repository has been archived on 15/May/2019
  • Stars
    star
    169
  • Rank 224,453 (Top 5 %)
  • Language
    Scala
  • License
    Other
  • Created almost 14 years ago
  • Updated over 12 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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!

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.

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.

More Repositories

1

gll-combinators

A parser combinator library based on the GLL algorithm
Scala
302
star
2

emm

A general monad for managing stacking effects
Scala
205
star
3

parseback

A Scala implementation of parsing with derivatives
Scala
197
star
4

sbt-github-packages

A simple sbt plugin for publishing to GitHub Packages, in the style of sbt-sonatype and sbt-bintray
Scala
174
star
5

shims

Seamless interop layer between cats and scalaz
Scala
174
star
6

cccp

Common Colaborative Coding Protocol
Scala
119
star
7

extreme-cleverness

A set of functional collections created, ported and modified for my tak at NE Scala 2011
Scala
91
star
8

sparse

Generalized, incremental parser combinators for scalaz-stream
Scala
63
star
9

skolems

A microlibrary for Scala encodings of higher-rank quantifiers
Scala
60
star
10

derivative-combinators

An implementation of derivative parsing in the parser combinator framework
Scala
59
star
11

sbt-spiewak

A plugin which represents my personal SBT project baseline
Scala
53
star
12

kitteh-redis

A toy Redis server implemented using pure FP on top of Cats Effect, Fs2, and Scodec
Scala
42
star
13

jedit-modes

A collection of new and modified edit modes for jEdit
34
star
14

scala-bison

A recursive ascent/descent parser generator for Scala
Scala
33
star
15

smock

A utility harness for testing free programs (built on specs2)
Scala
29
star
16

scala-collections

A number of collection implementations for Scala (including a few ported from Clojure)
Scala
27
star
17

async-runtime-benchmarks

Comparative benchmarks between asynchronous runtimes
Scala
27
star
18

scala-stm-proto

An implementation of a software transactional memory framework in Scala
Scala
19
star
19

sillio

Scala
16
star
20

ensime-sidekick

An ENSIME SideKick plugin for jEdit
Scala
16
star
21

linguistic-programming

Sources for my presentation on crafting DSLs in Scala
Scala
10
star
22

activeobjects

A Git fork of the mainline ActiveObjects SVN
Java
10
star
23

base.g8

My cool template
Scala
8
star
24

jbencode

A very fast Java Bencode pull parser/generator
Java
7
star
25

sbt-evil-mode

😈
Scala
7
star
26

shapely

Scala
7
star
27

cont-exp

Experiments with the continuation monad
Scala
7
star
28

dbpool

A fork of the excellent DBPool connection pool
Java
5
star
29

wronglisp

Scala
4
star
30

rst2twiki

A converter script from ReStructured Text to TWiki markup
4
star
31

iota-instances

Scalaz instances and things for iotaz coproducts
Scala
3
star
32

parser-workshop

Parser workshop at flatMap(Oslo) 2013
Scala
3
star
33

dist-mapper

A non-functional key/value store backend
Scala
2
star
34

schrodinger

Common communication protocol for IO / Task / Future data types
Scala
2
star
35

jedit-macros

1
star