Release Notes for Thrift 0.2.0

General changes:
  * First release under the Apache Incubator
  * THRIFT-34, THRIFT-270: Namespaces have been updated to Apache instead of Facebook
  * THRIFT-110, THRIFT-332, THRIFT-333: Beginnings of a new "Compact Protocol" implemented in Ruby, Java, and C++
  * THRIFT-136: "async" has been renamed "oneway"
  * THRIFT-409: Support for unions
  * THRIFT-173: New HTML generator for generating documentation

C++:
      THRIFT-91. cpp: Fix compilation on Fedora Core 9
      THRIFT-95. cpp: Fix write buffer initialization in TBufferedTransport
      THRIFT-96. cpp: TSocket.peek fails on FreeBSD
      THRIFT-149. cpp: Make TNonblockingServer handle a shut-down ThreadManager
      THRIFT-168. cpp: Clear transport buffers before a flush
      THRIFT-177. cpp: Add a missing "std::"
      THRIFT-178. java, csharp, cpp: Final Keyword
      THRIFT-194. cpp: Properlyl namespace exception types in catch
      THRIFT-203. cpp: Make library headers compile under g++ -pedantic
      THRIFT-214. cpp: Qualify another cast
      THRIFT-214. cpp: Qualify a cast to fix OSX compilation
      THRIFT-215. cpp: Disable an assertion that fails on various platforms
      THRIFT-225. java/cpp: Handle non-i32 integer constants properly
      THRIFT-244. cpp: Fix TJSONProtocol::writeMessageBegin
      THRIFT-244. cpp: Make TJSONProtocolFactor inherit from TProtocolFactory
      THRIFT-255. cpp: Add TSimpleFileTransport, a wrapper around TFDTransport
      THRIFT-265. cpp: Reset buffers every 512 calls in TNonblockingServer
      THRIFT-289. cpp: Fix "make check" by defining a comparator for "Instanity"
      THRIFT-333. cpp: Initial TCompactProtocol implementation
      THRIFT-348. cpp: Fix readBool for vectors of bools (again)
      THRIFT-351. cpp: Allow a custom ThreadFactory in TThreadedServer
      Thrift-357. cpp: Fix buffer and connection bloat in TNonBlockingServer
      THRIFT-411. cpp: Make TNonblockingServer::connectionStackLimit_ accessors use the right type
      THRIFT-425. cpp: numeric_limits is declared in <limits>
      THRIFT-426. cpp: Fix include path under test/cpp
      THRIFT-464. cpp: Fix some STL misuse in the concurrency library
      THRIFT-465. cpp: Fix some STL misuse in the concurrency library test
      THRIFT-466. cpp: Make the concurrency library test more thorough
      THRIFT-469. cpp: Fix a bug in TimerManager::add
      THRIFT-497. cpp: Fix TSocket::read and peek on Max OS
      THRIFT-555. cpp: Fix macro defintions for TCompact on non-GNU big endian
      THRIFT-587. cpp: Properly set addrLen before accept calls
      THRIFT-606. cpp: Fix build on Solaris Nevada
      THRIFT-621. cpp: Fix generated files using "apache" namespaces
      cpp: Add some missing includes to fix OpenBSD compilation
      cpp: Deal with systems without AI_ADDRCONFIG (OpenBSD)
      cpp: Deal with systems without sched_get_priority_{min,max} (OpenBSD)
      cpp: Eliminate a buffer overflow in the tutorial server
      cpp: Eliminate the use of fprintf [THRIFT-77]
      cpp: Fix an OpenBSD compilation bug by moving a typedef
      cpp: Fix an OpenBSD compilation error that appears to be a real bug
      cpp: Fix compilation on OpenBSD by including sys/types.h
      cpp: Fix compiler and library compilation with newer glibc
      cpp: Fix implementations of "list<bool>"
      cpp: Fix test server/client under test/cpp
      cpp: Fix "make check" by defining a comparator for "Empty"
      cpp: Make the test server compatible with the Python test client
      cpp: Rename Makefiles under test/cpp
      cpp: Resolve an ambiguous overload in some tests

Java:
      Minor whitespace fixes in the Java generator and gen-code
      THRIFT-10. java: Descriptors used during serialization should be immutable objects
      THRIFT-34 Java libraries should be namespaced under org.apache.thrift, not com.facebook.thrift
      THRIFT-64. java: Allow TServerSocket to bind to a specific IP address
      THRIFT-81. java: TNonblockingServer: Support a limit on read buffer size
      THRIFT-100. java: Set __isset better in beans style
      THRIFT-110. java: A more compact format
      THRIFT-115. java: Isset structure has a large memory footprint
      THRIFT-116. java: Isset fields for non-primitive types unnecessary
      THRIFT-119. java: structs' toString omits unset optional fields
      THRIFT-120. java: Make the nocamel option work for more methods
      THRIFT-130. java: Eliminate frame{Read,Write} from TFramedTransport
      THRIFT-138. java: Create deep-copy constructors for Thrift structs
      THRIFT-138. java: Fix copy constructor for binary fields
      THRIFT-139. java: Expose field ids in more useful ways
      THRIFT-139. java: Fix indentation in beans mode
      THRIFT-142. java: Better handling of required fields
      THRIFT-144. java: Generated classes should implement Comparable
      THRIFT-145. java: Make TNonblockingServer more robust against errors
      THRIFT-152. java: Set isset appropriately in structure constructors
      THRIFT-166. java: Java tests should be in lib/java/test/ THRIFT-221. java: Make java build classpath more dynamic and configurable
      THRIFT-172. java: Improve toString output for binary fields
      THRIFT-178. java, csharp, cpp: Final Keyword
      THRIFT-179. java: Include per-field docstrings in generated code
      THRIFT-191. java: Create a static field id -> name map for each struct
      THRIFT-202: java: Fix "make check"
      THRIFT-218. java: When validation fails on serialization/deserialization, print out the invalid object
      THRIFT-222. java: Better exposure if __isset in beans style
      THRIFT-225. java/cpp: Handle non-i32 integer constants properly
      THRIFT-235. java: Explicitly cast integer constants to double
      THRIFT-239. java: Generate @Override annotations for all overrided methods
      THRIFT-240. java: TBase should implement Cloneable
      THRIFT-249. java: Add @param lines to function docstrings
      THRIFT-253. java: Enhance FieldMetaData
      THRIFT-262. java: Generate Javadocs for library classes
      THRIFT-278. java: #validate exceptions should contain the offending value
      THRIFT-288. java: Generated code iterates maps during write inefficiently
      THRIFT-289. test: "make check" no longer runs the Java tests
      THRIFT-290. java: Metadata map doesn't properly reference external thrift file's types
      THRIFT-292. Auto-generate the Java gen-code in build.xml
      THRIFT-297. java: getFieldValue and setFieldValue should be abstract TBase methods
      THRIFT-303. java: Changes to __isset interface
      THRIFT-316. java: @Override isn't generated for hashCode() without the hash code builder
      THRIFT-318. java: Performance of HashSet for enumeration VALID_VALUES seems poor
      THRIFT-321. java: THRIFT-303 broke EqualityTest Regenerated test code.
      THRIFT-359. java:  nocamel style breaks generated services
      THRIFT-364. java: Use of enums in other namespaces breaks java generated code
      THRIFT-366. java: Lots of little warnings in java library
      THRIFT-367. java: Some dead code in TNonblockingSocket.java
      THRIFT-368. java: setFieldValue should allow nulls for all field types
      THRIFT-378. java: Java servers do not turn internal errors into thrift exceptions
      THRIFT-379. java: Print enum value names
      THRIFT-382. java:  Unused imports in generated code
      THRIFT-409. java: Add "union" to Thrift
      THRIFT-416. java: java.util.logging eats exceptions without warning
      THRIFT-427. java: Fix print_const_value
      THRIFT-446. java: PartialDeserialization in Java
      THRIFT-450. java: Check for Apache Commons Lang also
      THRIFT-450. java: Propagate CLASSPATH from ./configure to make and ant
      THRIFT-450. java: Respect the global classpath during testing
      THRIFT-453. java: By default, use Ivy to download Java dependencies
      THRIFT-462. java: Installed jar shouldn't be executable
      THRIFT-479. java: Add javadocs for enum types
      THRIFT-482. java: build.xml does not specify a target version for compiled java classes
      THRIFT-489. java: Java enum validation only validates explicitly assigned values
      THRIFT-493. java: Stopping TNonblockingServer when it hasn't been starting results in an exception
      THRIFT-529. java: Change generated constructors so that application code evolves better Optional fields are now excluded from constructors.
      THRIFT-540. java: Have set methods return reference to self
      THRIFT-543. java: Generate normal style java files should respect the "optional" keyword when serializing
      THRIFT-551. java: Enumeration doesn't generate real enum in Java This patch makes the compiler generate actual Enum classes.
      THRIFT-558. java:  Replace use of log4j by commons-logging in Java library and generated Java code
      THRIFT-565. java: Structs containing typedefs for incomparable objects will be considered comparable This patch causes the compiler to fully unwrap typedefs when determining comparability.
      THRIFT-566. java: jar file should contain copies of LICENSE and NOTICE files
      THRIFT-572. java: Union compareTo is broken
      THRIFT-588. java: Generated .equals method throws NPE for thrift object
      THRIFT-589. java: Add Field Name to Field ID Mapping Java Thrift structs now have a static mapping of field name to field ID.
      THRIFT-620. java: Compact Protocol should call readAll, not read This patch switches to calling readAll instead of read.
      THRIFT-623. java: Use a Java enum to represent field ids in generated structs
      THRIFT-624. java: compareTo is broken for Unions with binary fields This patch adds a special case for byte[] values in TUnion. It also fixes a related bug in TBaseHelper for comparing two byte arrays.
      THRIFT-628. java: Hash code method for _Fields objects does not behave as expected This patch switches to using the hashcode of the actual field id, instead of the field id enumeration.
      java: Added SerializationBenchmark.java, helper class for performing tests on protocols.
      java: Add a helper function to implement nocamel style
      java: Add nocamel option to not CamelCase field accessors [THRIFT-42]
      java: Close broken connections [THRIFT-73]
      java: Fix a minor formatting problem in the gen-code
      java: Specify in build.xml that we are using Java 1.5
      (THRIFT-5) A TNonblockingServers (single-threaded and thread-pool) for Java
      (THRIFT-12) Make the Java library use java.util.logging instead of stdout.
      [THRIFT-70] Allow the Java install prefix to be configured.


Erlang:
      Add erl back to EXTRA_DIST because it doesn't use Automake.
      Allow the Thrift compiler to be built without the Erlang generator.
      Make the Erlang generator dynamic.
      THRIFT-83. erlang: Don't flush an empty buffer in the http transport.
      THRIFT-94. erlang: Fix a syntax error
      THRIFT-126. erlang: TMemoryBuffer for Erlang
      THRIFT-127. erlang: Skip fields that have the wrong type
      THRIFT-136. s/async/oneway/ in Erlang
      THRIFT-186. erl: Make the Makefile work on OpenSolaris
      THRIFT-192. erlang: Commit test code missed in r757870
      THRIFT-192. erl: Fix handling of booleans
      THRIFT-211. erlang: Allow clients to be created without connecting
      THRIFT-211. erlang: Modify test_tether to test protocol error handling as well
      THRIFT-211. erlang: Support unlinked Thrift clients.
      THRIFT-211. erlang: Support "tethered" clients
      THRIFT-266. erlang: Erlang atoms must always start with lower-case character
      THRIFT-305. erlang: Fix http_options for thrift_http_transport
      THRIFT-306. erlang: Let thrift_http_transport specify custom HTTP headers
      THRIFT-307. erlang: Make HiPE optional
      THRIFT-524. erlang: Decapitalize file names in include directives
      THRIFT-574. erlang: Support framed transport for servers


Python:
      Python generator exception namespacing, THRIFT-150
      THRIFT-48. python: Make TServerSocket work with Unix-domain sockets
      THRIFT-67. python: Add TNonblockingServer
      THRIFT-93. Remove unnecessary shebang lines from Python libraries
      THRIFT-108. python: Fix call to PyDict_Next in fastbinary.c
      THRIFT-109. python: Use self.assert* instead of assert in tests
      THRIFT-148. py: Add support for Twisted
      THRIFT-148. py: Add un-commited file missing from 749510
      THRIFT-148. py: One more time, reapply the most *recent* patch
      THRIFT-154. python: Make THttpClient take a URL in its constructor
      THRIFT-155. python: Reopen THttpClient on a flush
      THRIFT-195. python: Add a simple THttpServer
      THRIFT-212. python: Make TFramedTransport implement CReadableTransport
      THRIFT-217. Use "--gen py" instead of "-py" in build scripts
      THRIFT-241. python: Generate a better implementation of __repr__
      THRIFT-242. python: Used named arguments in __init__ instead of a dict
      THRIFT-256. python: Fix inheritance of services in the same IDL file
      THRIFT-282. Generate doccstrings for Python classes
      THRIFT-284. python: Update tutorial files to use repr
      THRIFT-285. python: Don't generate _result structs for async functions
      THRIFT-292. Auto-generate the Python gen-code in build.xml
      THRIFT-292. Restore fb303/FacebookBase.py
      THRIFT-310. python: Generate valid code for empty services
      THRIFT-329. python: Make TServerSocket.close() work properly
      THRIFT-340. python: Detect endianness properly on FreeBSD
      THRIFT-360. python: Make fastbinary skip struct fields with the wrong type
      THRIFT-362. python: Detect endianness on Solaris
      THRIFT-391. py: Fix memory leak in fastbinary
      THRIFT-412. python: Fix some syntacticaly-incorrect code generation
      THRIFT-463. python: Fix thrift_spec ordering bug from r760201
      THRIFT-471. python: Generated exceptions should implement __str__
      THRIFT-494. python: Update meta-information in setup.py
      THRIFT-495. python: Raise a TTransportException if TSocket is not open
      THRIFT-535. py: Twisted Thrift protocol max length is too small
      THRIFT-535. py: Twisted Thrift protocol max length is too small (fix off-by-one error in MAX_LENGTH)
      THRIFT-583. python: Allow new-style classes for Interfaces
      THRIFT-586. python: TSocket incorrectly sets the exception type when an end of file error occurs
      THRIFT-612. python: Fix exception bug in TFramedTransport.cstringio_refill
      THRIFT-637. python: Fix mixing of oneway and regular requests in TNonblockingServer
      cpp: Make the test server compatible with the Python test client
      generate Twisted code in a separate directory (gen-py.twisted)
      python: Add TFileObjectTransport
      python: Eliminate the option of TFramedTransport to not frame
      python: Make TFramedTransport use a cStringIO for reading
      python: Make the unit tests run faster and more reliably
      rb: Make TServer.py Python 2.4 compatible [THRIFT-44]

Ruby:
      Add Apache headers to Ruby libs and remove a few remaining Facebook notices
      Add back OCamlMakefile and setup.rb to LICENSE
      Fix "make distclean" when Ruby is not in use
      Remove now defunct tests (they've been moved to specs in lib/rb)
      THRFIT-231. rb: Make Thrift::Structs hashable
      THRIFT-132. ruby: Ruby generator should use ::Thrift::Foo namespace form
      THRIFT-157. rb: Quote strings and qualify class names properly
      THRIFT-175. Specs in Ruby library should be run during make check
      THRIFT-229. rb: Don't block indefinitely on connect()
      THRIFT-245. rb: FIELDS constant should contain name of enumerated type for enum fields
      THRIFT-246. rb: Generate #struct_fields rather than reflect.
      THRIFT-248. ruby: Factor BinaryProtocolAccelerated into separate protocol and struct components
      THRIFT-254. rb: Add optional strict version support to binary protocols
      THRIFT-260. rb: Some Protocol methods shouldn't have default nil implementations
      THRIFT-275. rb: Remove deprecated classes from Ruby library
      THRIFT-276. rb: Ruby libraries should have one class per file
      THRIFT-277. rb: Abstract Transport in Ruby #read method should throw NotImplementedException
      THRIFT-298. ruby: Exception propagation seems broken for Ruby clients
      THRIFT-302. ruby: Native extension fails to build
      THRIFT-312. rb: Ruby unit tests fail due to change in BinaryProtocolAccelerated interface
      THRIFT-313. rb: BinaryProtocolAccelerated and BinaryProtocol don't produce the same bytes when writes aren't strict
      THRIFT-332. rb: Compact Protocol in Ruby
      THRIFT-352. rb: Implicit enums should be valid values
      THRIFT-353. rb: Capitalize module names on ruby generation
      THRIFT-358. ruby:  Change how external thrift files' generated code is required
      THRIFT-372. rb: Ruby lib doesn't rescue properly from lack of native_thrift extension
      THRIFT-374. rb: ruby 1.9 compatibility
      THRIFT-375. rb: syntax error in benchmark.rb
      THRIFT-396. rb: BinaryProtocol missing method implementations
      THRIFT-401. rb: Speed up FramedTransport
      THRIFT-402. rb: MemoryBuffer > 4096 bytes will truncate remaining bytes
      THRIFT-408. rb: Ruby C extension doesn't build on 1.8.5
      THRIFT-410. rb: Ruby lib should have no checked in generated code
      THRIFT-410. rb:  Ruby lib should have no checked in generated code
      THRIFT-415. rb: BinaryProtocolAccelerated does not behave properly when strict reads are turned off
      THRIFT-417. rb: BufferedTransport can enter an infinite loop
      THRIFT-421. rb: Fix tests broken by original patch
      THRIFT-422. rb: scope all references to the Thrift module
      THRIFT-430. rb: ruby tutorials and ruby tests require deprecated files and class names
      THRIFT-431. rb: Capitalize namespace values
      THRIFT-433. rb: 'rake spec' sort of fails
      THRIFT-437. rb: fix benchmarking tools to require proper file names
      THRIFT-444. rb: THRIFT-356 broke compact protocol spec
      THRIFT-445. rb: client and processor do not inherit from the proper namespace scope
      THRIFT-451. rb: ruby structs use lowercase enum while modules are capitalized
      THRIFT-485. rb:  Generated validate methods that reference external thrift files' types are not referenced correctly
      THRIFT-486. rb: ruby tutorial needs updated require statements
      THRIFT-498. rb: Compact and Binary native protocols, used at the same time, can cause some issues
      THRIFT-501. rb: File.dirname(...) requires cause warnings in some scenarios
      THRIFT-511. rb: Better performing hash method for generated structs
      THRIFT-513. rb: spec test files broken, rake searching for misnamed files
      THRIFT-516. rb: If TFramedTransport reads a negative frame size, throw a TTransportException descendant instead of the default NegativeArraySizeException
      THRIFT-526. rb: Generated Ruby enums have no good way to get the names back out once you have a number.
      THRIFT-547. rb: Thrift deserializer hangs when deserializing empty string
      THRIFT-552. rb: gem requires exactly rubygems 1.2.0
      HRIFT-569. rb: Segmentation Fault when using BinaryProtocolAccelerated in Ruby
      THRIFT-571. rb: compact_protocol.c:89: warning: format not a string literal and no format arguments
      THRIFT-572. rb: fix RSTRING for 1.9 compatibility
      THRIFT-603. rb: Struct read method does not call validate After reading a struct, we will now call the struct's validate method.
      Thrift-421. rb: Underscore output file names and require file statments
      rb: Add FramedTransport#borrow/consume! [THRIFT-117]
      rb: Add TProtocolException to the backwards_compatibility_spec [THRIFT-88]
      rb: Add docstrings to generated ruby code [THRIFT-147]
      rb: Add ext/ to loadpath so BinaryProtocolAccelerated specs pass
      rb: Add optional timeout argument to Thrift::Socket [THRIFT-74]
      rb: Add pretty inspect, optional field hint for Thrift::Struct
      rb: Add some additional error handling to Thrift::Socket [THRIFT-53]
      rb: Add stubs for rake install/package when Echoe not present [THRIFT-52]
      rb: BinaryProtocolAccelerated should use Thrift::ProtocolException [THRIFT-89]
      rb: BufferedTransport should flush on close [THRIFT-49]
      rb: Buffer the slice!s in MemoryBuffer for a significant performance increase [THRIFT-63]
      rb: Bugfix for deprecation code [kevin@rapleaf.com][THRIFT-50]
      rb: Change the license from Thrift Software License to Apache Software License [THRIFT-38]
      rb: Check Thrift.type_checking earlier for a performance boost [THRIFT-55]
      rb: Check container elements when Thrift.type_checking = true [THRIFT-104]
      rb: Create constants for field ids in generated structs [THRIFT-165]
      rb: Delete setup.rb [THRIFT-38]
      rb: Display field name in type-checking error [THRIFT-78]
      rb: Ensure the specs that expect deprecation warnings actually get them [THRIFT-56]
      rb: Ensure the transport is closed if an exception is raised serializing data in Client.send_message [THRIFT-75]
      rb: Improve IOStreamTransport to behave more like a real transport [THRIFT-76]
      rb: Make TServer.py Python 2.4 compatible [THRIFT-44]
      rb: Performance tweaks in Struct#initialize [THRIFT-188]
      rb: Remove extra validate in read [THRIFT-207]
      rb: Reorganize the Rakefile a bit [THRIFT-38]
      rb: Spec out Thrift::BinaryProtocolAccelerated [THRIFT-90]
      rb: Speed up Struct#initialize for optional fields [THRFIT-112]
      rb: Support SSL and correct Content-Type in HTTPClient [THRIFT-156]
      rb: Support `raise Xception, message` for Structs that inherit from ::Exception [THRIFT-58]
      rb: Teach BinaryProtocolAccelerated to encode strings with NULs [THRIFT-97]
      rb: The deprecation stuff should skip thrift library code when showing caller [THRIFT-56]
      rb: The shared binary protocol specs lacked a test for read_message_begin
      rb: Thrift.check_type should check struct classes [THRIFT-185]
      rb: Update HTTPClientSpec for THRIFT-156
      rb: Use Echoe to manage the gem [THRIFT-38]
      rb: Use File.dirname(__FILE__) in generated requires [THRIFT-57]
      rb: Use defined? JRUBY_VERSION to detect JRuby [THRIFT-38]
      rb: Validate struct _after_ read. [THRIFT-206]
      rb: When passing unknown keys to Thrift::Struct.new, report those keys in the exception [THRIFT-51]
      rb: raise if an object is serialized without required fields [THRIFT-143]
      rb: require 'thrift' first in generated service definitions [THRIFT-38]
      rb: rewrite the README [THRIFT-38]

PHP:
      Allow the Thrift compiler to be built without the PHP generator.
      Make the PHP generator dynamic.
      Make the PHP generator use non-hardcoded namespaces.
      Remove obsolete php extension tag
      THRIFT-99. php: Add scheme (http[s], etc.) support to THttpClient
      THRIFT-349. php: Accelerated binary protocol serialization segementation fault
      THRIFT-350. php: Fix the extension build when C++ is not already used
      THRIFT-404. php: Make TPhpStream work for cli (cgi) scripts
      THRIFT-405. php: Create a tutorial server
      THRIFT-499. php: Thrift_protocol PHP extension does not handle signedness correctly
      THRIFT-584. php: Generate a better directory structure
      php: Fix an undefined variasble in an error message
      php: Improve some docblock comments for TSocket

Perl:
      Perl library should honor the INSTALLDIRS variable
      THRIFT-190. Added dependency check to perl Makefile
      THRIFT-193: Patch for proper namespace support in perl compiler
      THRIFT-199. perl: Let "make distclean" work when we are not using Perl
      THRIFT-199: integrate perl into automake
      THRIFT-470. fb303: Use a namespace in Perl gen-code
      THRIFT-542: Perl compiler uses invalid method 'method_exists' and subsequent test
      THRIFT-554: Perl improper namespace check for exception handling and writeMessageEnd missing on processor calls
      THRIFT-590: send/recv timeout values interchanged in perl socket lib
      THRIFT-619: Perl server and example


C#:
      THRIFT-25. csharp: Various compiler and library improvements
      THRIFT-46. csharp: Throw the correct exception for an unknown method
      THRIFT-129. csharp: Make all Thrift structures extend TBase
      THRIFT-158. csharp: Update headers to Apache
      THRIFT-159. csharp: Compiler doesn't add package scope to exceptions in catch blocks and assigns to unused local var when reading
      THRIFT-178. java, csharp, cpp: Final Keyword
      THRIFT-204. csharp: C# Partial Classes
      THRIFT-209. csharp: Make TTransportFactory.GetTransport virtual
      THRIFT-258. csharp: Include all lib source files in Makefile.am
      THRIFT-264. csharp: Include TBufferedTransport in the build on Linux
      THRIFT-264. csharp: Use /langversion:linq to fix the Linux build
      THRIFT-384. csharp: Fix handling of fields named "value"
      THRIFT-467. csharp: Fix compilation on Debian Sid
      THRIFT-525. csharp: ThriftTest project will not generate c# from .thrift file or generate ThriftImpl.dll
      THRIFT-531. csharp: C# project and solution files reference external source control system
      csharp: Remove a BOM and CRLF line endings from some test code

Haskell:
      Consolidate lib/hs/.gitignore into the top-level .gitignore
      THRIFT-385. hs: 64-bit integer and double types incorrectly serialized on 32-bit platforms
      THRIFT-390. hs: Cabalize Haskell library code
      THRIFT-392. hs: Make test scripts easier to use
      THRIFT-397. hs: Remove unnecessary redefinition of generate_program()
      THRIFT-398. hs: Remove unnecessary parens from generated type annotations
      THRIFT-399. hs: Fix set and number issues in generated constant code
      THRIFT-407. hs: Refactor and improve Haskell-related code

OCaml:
      No changes

Smalltalk:
      smalltalk: Fix TBinaryProtocol readString for empty strings

XSD:
      Allow the Thrift compiler to be built without the XSD generator.
      Make the XSD generator dynamic.
      Make the XSD generator use non-hardcoded namespaces.

HTML:
      THRIFT-173. Commit the html generator
      THRIFT-259. html: Generate "extends" link for extended services
      THRIFT-365. html:  HTML compiler infinite loop

Cocoa:
      THRIFT-280. Server-side Cocoa implementation.
      THRIFT-343. Import <Foundation/Foundation.h> instead of <Cocoa/Cocoa.h> to support iPhone
      THRIFT-344.  Add a 'log_unexpected' option to the cocoa generator.  off by default.  when supplied, unexpected field IDs and types are logged when reading a struct.
      THRIFT-520. Fix generation of cocoa constants when a namespace prefix is set.



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.
