Release Notes for Thrift 20080411

.equals and .hashCode() for Java scturcts (developed by dreiss).

Improvments to the C++ TSocketPool (developed by akhil).

PHP (de)serialization extension (developed by dweatherford).

Add fb303 to contrib (developed by Facebook).

TJSONProtocol for C++ and Java (contributed by Chad Walters of Powerset).

Support for "make check" and better tests (contributed by Nitay).

Smalltalk support (contributed by Patrick Collison).

Dave Simpson <dave@powerset.com>
Better support for connection tracking in the C++ server (contributed by
Dave Simpson of Powerset).

Perl HttpClient (contributed by Igor Afanasyev of Evernote).

C# support (contributed by Todd Berman of imeem).

MinGW port of the compiler (contributed by Todd Berman of imeem).

Tons of small improvements and bug fixes.


Release Notes for Thrift 20070917

TBinaryProtocol now includes a protocol version number in messaged.
This is a non-backwards-compatible change.  Please see the
TBinaryProtocol constructor for strictRead_ and strictWrite_.

Add binary type to support non-text "strings" in Java.

TSocketPool for C++ (developed by jsobel).

Syntax highlighting for vim and emacs (developed by hzhao and martin).

Perl support (contributed by Jake Luciani).

Erlang support (developed by cpiro).

Ruby API overhaul (contributed by Kevin Clark of Powerset).

IPv6 support in C++ and Python (contributed by Paul Saab of Powerset).

Read/Write locks (developed by boz).

OCaml support (developed by iproctor).

Human-readable strings from Thrift structures in C++ (developed by dreiss).

Haskell support (developed by iproctor).

Support for optional fields in C++ (contributed by Andy Lutomirsky).

Support for operator== for Thrift structures (contributed by Andy Lutomirsky).

Python/C module for fast (de)serialization (contributed by Ben Maurer).

Limited reflection for C++ services (developed by dreiss).

Python library installation defaults to /usr, override with PY_PREFIX.

Support for Javabean-style Java classes (contributed by Dave Engberg).

TDenseProtocol for C++ (experimental way to shrink structures)
(developed by dreiss).

Cocoa/Objective C support (contributed by Andrew McGeachie).

Thrift now builds without libevent.

TZlibTransport for C++ (compress serialized structures) (developed by dreiss).

Tons of small improvements and bug fixes.
