Subversion Repositories SmartDukaan

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

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.