Welcome to Apache Etch 1.2.0. Etch is incubating at apache.org. You can find
us here:

Project info:

    http://incubator.apache.org/projects/etch.html
    http://incubator.apache.org/etch

Documentation info:

    http://incubator.apache.org/etch

Issues:

    https://issues.apache.org/jira/browse/ETCH

SVN:

    http://svn.apache.org/repos/asf/incubator/etch/

Continous Integration Server (Hudson):

    https://hudson.apache.org/hudson/view/etch

Mailing lists:

    mailto:etch-dev@incubator.apache.org (etch developers)
    mailto:etch-user@incubator.apache.org (etch users)

Subscribing to the mailing lists:

    mailto:etch-dev-subscribe@incubator.apache.org (etch developers)
    mailto:etch-user-subscribe@incubator.apache.org (etch users)

This release is the first fully ASF compliant release of Apache Etch.

The release consists of the three stable language bindings of Etch
- Java
- C#
- C

Since release 1.1.0 Etch uses name spaces which look something like 
org.apache.etch... 
If you upgrade from an older version you have to preceed the following steps
in order to continue using your old etch files:
- All bindings
  In every cases, you will need to re-etch your *.etch source files.
- Java:
  All that need be done for java is to correct the package names from etch.* 
  to org.apache.etch.*. 
- C#:
  For C#, the namespace has changed from Etch.* to Org.Apache.Etch.*. 
  

There are also some new components in this release. There is now an experimental binding for Google Go and we 
started working on a binding for C++. 
For the Go binding, there is still some work to be done, interested parties should 
send inquiries to etch-dev@incubator.apache.org. 
The C++ binding is not function yet, we just added the first prerequisite like a CMake based build system 
and first components of the needed OS abstraction.
There are a few bugs fixed in this release, too, as detailed below.

Here are the issues resolved in this release:

** Bug
    * [ETCH-26] - C# Binding: some unexpected exceptions are thrown if .Net Framework Language Pack is installed
    * [ETCH-106] - C Binding: double-free bug for structs containing structs containing strings
    * [ETCH-107] - C binding Compiler: different genereted port numbers 
    * [ETCH-108] - C Binding: Race condition for simultaneous connection loss and runtime cleanup
    * [ETCH-109] - C Binding: Mixins not fully functional
    * [ETCH-114] - Bug fix plain_mailbox_manager; do cleanup all registered mailboxes if connection goes down
    * [ETCH-116] - Change \scripts\antsetup.bat so external ENV variables are also handled
    * [ETCH-117] - Race condition while connection goes down
    * [ETCH-119] - Bugfix TCP backlog parameter
    * [ETCH-155] - Sockets do not shutdown correctly on Linux
    * [ETCH-156] - C-Binding: client side crash when calling stop_wait while socket is being shut down from server side
    * [ETCH-160] - Some of csharp tests are failing with .Net 4.0 and Nunit 2.5.9.10348
    * [ETCH-161] - Naming conflicts in Etch binding-c runtime message module; add prefix etch_message
    * [ETCH-164] - Cmake home path is not set in antsetup.bat for Windows
    * [ETCH-165] - *.etch extension
    * [ETCH-169] - Website must display disclaimer text and link to incubator
    * [ETCH-171] - Update Etch Binding to new Go Version
    * [ETCH-189] - CSharp examples have broken builds for 2008/2010 Visual Studio

** Improvement
    * [ETCH-5] - We need a Logo
    * [ETCH-58] - Integrate apache-rat into build
    * [ETCH-118] - Add exception handling code to hello world c-binding example
    * [ETCH-158] - Build Configuration

** New Feature
    * [ETCH-14] - Design and provide example of using forrest to deploy etch documentation
    * [ETCH-120] - Implement first Google Go Binding version
    * [ETCH-152] - Change build system to support different build stages like stable, nightly
    * [ETCH-153] - Add binding-cpp to nightly builds

** Task
    * [ETCH-83] - Setup Hudson Build Configuration for continous Etch builds
    * [ETCH-93] - Update external etch dependencies to new versions
    * [ETCH-102] - clean up etch headers (distribution vs. build)
    * [ETCH-110] - extend etch mutex unit tests
    * [ETCH-126] - Migrate Etch website to new Apache CMS
    * [ETCH-127] - Create CMS infrastructure
    * [ETCH-128] - Create website layout and templates
    * [ETCH-129] - Create website basic sites
    * [ETCH-130] - Migrate content to new CMS structure
    * [ETCH-148] - Cmake based build system for C++ binding & tests
    * [ETCH-159] - Update Build to work with latest Apache Ant 1.8.2
    * [ETCH-188] - Update Readme files

** Sub-task
    * [ETCH-139] - Implementation of EtchNativeArray
    * [ETCH-140] - Implementation of EtchThread
    * [ETCH-142] - Implementation of EtchMutex
    * [ETCH-144] - Implementation of EtchWait
    * [ETCH-150] - Implementation of basic primitive data types for the NSDL
    * [ETCH-154] - Implementation of Etch Bytes Wrapper





