blob: 0dc40b65cd99dbbe9f5c282b0cab9e1eb51ea726 [file] [log] [blame]
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.