SHA256
1
0
forked from pool/thrift
thrift/thrift.changes
2024-02-12 16:55:53 +00:00

617 lines
25 KiB
Plaintext

-------------------------------------------------------------------
Fri Feb 9 08:30:47 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Add python-setuptools BuildRequires: fix build.
-------------------------------------------------------------------
Fri Dec 29 14:37:20 UTC 2023 - Frederic Crozat <fcrozat@suse.com>
- Update download url.
-------------------------------------------------------------------
Mon Dec 5 12:28:38 UTC 2022 - Dirk Müller <dmueller@suse.com>
- update to 0.17.0:
* ### C++
* THRIFT-5093 - lib: cpp: test: clarify effect of MemoryPolicy on
TMemoryBuffer
* THRIFT-5510 - On Windows NOMINMAX and WIN32_LEAN_AND_MEAN are unset even
if set before
* THRIFT-5515 - Oneway requests can stuck in TNonblockingServer with
TSSLSocket
* THRIFT-5529 - Missing space "<::" in C++ generator
* THRIFT-5576 - fix old-style cast at const value ctor/copy and redundant
copy at ctor
* ### Common LISP
* THRIFT-5501 - Remove Common Lisp support
* THRIFT-5567 - remove reference to common lisp namespace
* ### Go
* THRIFT-5495 - Go lib server not close client when shutdown
* THRIFT-5527 - generated Process function in go will swallow exceptions
defined in thrift IDL
* THRIFT-5539 - Performance penalty of using TDebugProtocol.DuplicateTo
* THRIFT-5569 - generated Go code crashes when reading invalid
map/set/list
* THRIFT-5583 - Add a skip_remote arg to go compiler
* THRIFT-5605 - Go client middleware has no (easy) access to IDL
exceptions
* THRIFT-5609 - TJSONProtocol is unsafe to be used with TDeserializerPool
* ### Java
* THRIFT-4086 - Java compiler generates different meta data depending on
order of structures in file
* THRIFT-5485 - @SuppressWarnings is placed above Javadoc
* THRIFT-5494 - byte count of
FrameBuffer(AbstractNonblockingServer.readBufferBytesAllocated) is not
subtracted
* THRIFT-5502 - Is it necessary to report CONNECTION RESET as an ERROR?
* THRIFT-5519 - Java async client loses exceptions in void methods
* THRIFT-5520 - add method to convert Option type to java Optional
* THRIFT-5521 - In Java lib, add param for option_type to generate JDK8
optional types
* THRIFT-5522 - Upgrade to gradle 6 for Java build
* THRIFT-5525 - java gen to use reuse_objects instead of reuse-objects as
a consistent param casing
* THRIFT-5526 - java gen to use private_members instead of private-members
as a consistent param casing
* THRIFT-5533 - Fix Java warnings: @param, @return and deprecation
* THRIFT-5543 - Java lib FieldMetaData should be more type-safe by adding
type parameter to metadata registerations
* THRIFT-5544 - add java code gen param to support including field
annotation as metadata
* THRIFT-5545 - Follow newer gradle convention in organizing source code
directories
* THRIFT-5552 - Apply clang-format to java code gen file
* THRIFT-5553 - java library to use newer gradle API
* THRIFT-5555 - Java codegen and library to support future-returning
client interface and implementation
* THRIFT-5557 - Move Java-only tests from /test to /lib/java
* THRIFT-5560 - Use JUnit 5 (Jupiter) for Java unit tests
* THRIFT-5562 - remove gradle wrapper jar file from source tree
* THRIFT-5563 - fix deprecation and enable xlint for java library
* THRIFT-5568 - Use spotless gradle plugin and google-java-format to
enforce a consistent code format
* THRIFT-5570 - update java lib document about gradle usage
* THRIFT-5581 - Upgrade gradle version to 7.4+
* THRIFT-5582 - Improve TProtocol.java
* THRIFT-5584 - Use gradle toolchain to specify build time Java version
* ### JSON
* THRIFT-5549 - Json generator should indent properly while generating
includes
* THRIFT-5535 - Ability to support connection on OpenHarmonyOS
* ### Perl
* THRIFT-5532 - Perl Thrift/HttpClient.pm headers bug
* ### Python
* THRIFT-2059 - Support for Python 3.4 enums
* THRIFT-5449 - Use select.poll instead of select.select in Python
TNonblockingServer if available
* THRIFT-5467 - CannotSendHeader exception with 0.15
* THRIFT-5595 - TSocket errors with SSLSocket
* ### Rust
* THRIFT-4100 - Extract Rust read/write struct methods into a trait
* ### Wish List
* THRIFT-3461 - Support Method Deprecation
-------------------------------------------------------------------
Tue Jun 14 10:35:44 UTC 2022 - Dirk Müller <dmueller@suse.com>
- update to 0.16.0:
* C++ library don't work with HTTP
* Swift service generator doesn't support oneway
* Deprecate Common Lisp support
### C++
* Add support for Unix domain sockets on Windows 10 or later
* C++ to_string and ostream operator not always generated
* ServerSocket doesn't ignore SIGPIPE
### Erlang
* Introduce delimiter and app_prefix options to erl generator
* Invalid golang code generated for optional set<binary> with a default value
* Go lib skip map value may cause stack overflow
* Improve memory efficiency in go THeader implementation
* Potential connection leaks caused by the connectivity check
* Error: Constraint check failure for haxe.ds.ObjectMap.K
### Java
* add support for partial deserialization of Thrift
* fix issues found by spotbugs
* Update java dependencies
### JavaScript
* Wrong type mapping of thrift binary type
### netstd
* MaxMessageSize reached exception thrown in TEndpointTransport
* Support for deprecated methods (via annotation)
* Add net 6 support
* TThreadPoolAsyncServer using TFramedTransport mistakenly drops client
* consolidate netstd server implementation details into one common model
* Uncompilable code when .thrift struct 'System' exists
* CA2254 Message template should be compile time constant
### Perl
* Fix build-cpan-dist.sh to create a CPAN distribution correctly
* Allow UDP Socket Client In Perl
### Python
* Python TProcessPoolServer does not spawn expected number of worker processes
* SystemError when using fast binary or compact protocol in python 3.10
### Rust
* Make server optional
- drop patch thrift-pr2487-py310.patch (upstream)
- remove python2 subpackage
-------------------------------------------------------------------
Sun Jan 16 13:49:26 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Update to 0.15.0
* Known Open Issues (Blocker or Critical)
- [THRIFT-3877] - C++: library don't work with HTTP (csharp
server, cpp client; need cross test enhancement)
* Removed Languages
- [THRIFT-5229] - ActionScript 3 support dropped
- [THRIFT-5347] - Haskell support dropped
* Breaking Changes
- [THRIFT-5381] - possible collisions at VOID type with some
3rd-party libraries on Haxe cpp targets
- [THRIFT-5396] - deprecate netstd "Async" method postfix
- [THRIFT-5453] - go: NewTSocketConf and NewTSSLSocketConf no
longer return an error
* AS3
- [THRIFT-5229] - Deprecate/remove ActionScript 3 support
* Build Process
- [THRIFT-5334] - version of thrift-maven-plugin is not sync
with the main project
- [THRIFT-5394] - AppVeyor CI tries to download outdated cmake
- [THRIFT-5429] - build: autotools: add foreign to
AM_INIT_AUTOMAKE
* C glib
- [THRIFT-5244] - Dynamic exception specifications are
deprecated in C++11[-Wdeprecated]
- [THRIFT-5265] - Add the zlib transport to c_glib
- [THRIFT-5399] - Fix socket leak in abnormal situation
- [THRIFT-5421] - Fix the problem of incorrect setting of errno
in some files
* C++
- [THRIFT-5341] - Fix Old-Style-Cast, Missing override and
Possible noexcept
- [THRIFT-5342] - Apply 'noexcept' attribute to Init/Copy/Move
Constructors and Assignments
- [THRIFT-5355] - Do not rely on compiler and check boundaries
* D language
- [THRIFT-4303] - D deprecation warnings
- [THRIFT-4979] - Still D deprecation warnings about
std.datetime.* in current master
- [THRIFT-5376] - Fix deprecation warnings in D library
* Dart
- [THRIFT-5285] - Update to dart 2, widen range on http package
* Delphi
- [THRIFT-5350] - 0.14.0 fails to build on non-x86
- [THRIFT-5438] - Inconsistent handling of exceptions during
message read vs. message write phase
- [THRIFT-5384] - Improved error message for HTTP transports
- [THRIFT-5385] - XML-HTTP client reports IsOpen=TRUE even if
it is not
- [THRIFT-5386] - XML-HTTP client may throw "max message size
reached" incorrectly
- [THRIFT-5387] - Improved and simplified Delphi test setup
- [THRIFT-5390] - Named Pipes transport hardening
- [THRIFT-5428] - Prevent costly reallocations to improve
performance
- [THRIFT-5437] - Make TProtocolImpl CTOR virtual
* Documentation
- [THRIFT-5332] - Question: list all the reserved words in
thrift doc
- [THRIFT-5348] - Update debian/copyright
* Erlang
- [THRIFT-5377] - Remove Erlang R16 support
* Go
- [THRIFT-5337] - Go set fields write improvement
- [THRIFT-5353] - Namespace from type is ignored in generated
code
- [THRIFT-5358] - Add go.mod file(s)
- [THRIFT-5369] - Malformed payload can still cause huge
allocations
- [THRIFT-5389] - Thrift compiler generates uncompilable go
code around optional constants
- [THRIFT-5404] - TTransportException.Timeout would correctly
return true when it's connect timeout during TSocket.Open
call
- [THRIFT-5447] - Update supported Go versions before 0.15.0
release
- [THRIFT-5453] - go: NewTSocketConf should not call
net.ResolveTCPAddr
- [THRIFT-5459] - Adding a new exception to an endpoint is
kinda breaking in go
* Haskell
- [THRIFT-5347] - Deprecate Haskell bindings
* Haxe
- [THRIFT-5370] - Haxe 4 compatibility
- [THRIFT-5381] - possible collisions at VOID type with some
3rd-party libraries on Haxe cpp targets
- [THRIFT-5393] - Incorrect namespaces for included types
- [THRIFT-3036] - create official haxelib Thrift package
- [THRIFT-5413] - Int vs String in method get_size required by
property size
* Java
- [THRIFT-5375] - Put org.apache.tomcat.embed:tomcat-embed-core
into scope test
- [THRIFT-5383] - TJSONProtocol Java readString throws on
bounds check
- [THRIFT-5400] - Java library does not export the .annotation
package
- [THRIFT-5425] - Throw an exception when reading TSimpleJson
in Java
- [THRIFT-5430] - FieldMetaData synchronized method can trigger
deadlock during static class initialization in JVM native
code
- [THRIFT-5432] - TSaslTransport throw TTransportException of
MaxMessageSize reached
- [THRIFT-5433] - Add Counter To Thread Name of
TThreadPoolServer
* JavaScript
- [THRIFT-3508] - JS:TS Generator set all fields of the struct
as required
* Lua
- [THRIFT-5417] - Fix Lua compiler omitting default values in
Lua service functions
- [THRIFT-5439] - Lua Generator does not support const i64
* netstd
- [THRIFT-5354] - disable IDE0083 warning
- [THRIFT-5382] - Netstd default list/set enums values are
generated incorrectly in some cases
- [THRIFT-5395] - inconsistent treatment of methods ending in
"Async"
- [THRIFT-5396] - deprecate "Async" method postfix
- [THRIFT-5408] - Support for deprecated methods (via
annotation)
- [THRIFT-5414] - Use of specific parameter names generates
uncompileable code
- [THRIFT-5442] - Separate client service calls into send/recv
methods and make them public
- [THRIFT-5444] - Netstd generator produces uncompileable code
for enums ending with "_result" or "_args"
- [THRIFT-5445] - "cancellationToken" cannot be used as
argument name
- [THRIFT-5236] - THttpTransport.cs still has bad timeout code
- [THRIFT-5349] - Add net5.0 as supported platform
- [THRIFT-5373] - HTTP status in case of Protocol/Transport
exceptions
- [THRIFT-5391] - Named pipes transport hardening
- [THRIFT-5398] - ThreadPoolServer not stoppable via
CancellationToken
- [THRIFT-5407] - Keep support for .NET Core 3.1
- [THRIFT-5419] - Incorrect usage of thread pool in
TThreadPoolAsyncServer may lead to poor performance
- [THRIFT-5422] - add threadpool server to netstd test suite
impl
- [THRIFT-5431] - Response should include 'content-type' header
- [THRIFT-5436] - Timeout.Infinite is not a good default
* PHP
- [THRIFT-5318] - PHP 8 compatible version of binary protocol
- [THRIFT-5440] - Add php8 to composer.json
* Python
- [THRIFT-5352] - Python: IDL exceptions with no fields can't
be instantiated
* Ruby
- [THRIFT-5312] - The Ruby compilation configuration in the
.gemspec file is modified to be compatible with later bundler
versions.
- [THRIFT-5367] - Ruby library crashes when using GC.compact
* Rust
- [THRIFT-4098] - Support user-defined output namespaces in
generated Rust modules
- [THRIFT-4101] - Make auto-generated Rust enums and unions
more user-extensible
- [THRIFT-5314] - Enum forward compatibility
- [THRIFT-5363] - All-caps constant rendered incorrectly
- Add thrift-pr2487-py310.patch for Python 3.10 compatibility
* gh#apache/thrift#2487
* https://issues.apache.org/jira/browse/THRIFT-5488
* required by python-fastparquet
-------------------------------------------------------------------
Tue Apr 13 23:29:20 UTC 2021 - Ferdinand Thiessen <rpm@fthiessen.de>
- Update to 0.14.1
* Fixes CVE-2020-13949
* Deprecated Languages:
+ Deprecate ActionScript 3 support
+ Deprecate Haskell bindings
* Removed Languages:
+ Remove deprecated C# and netcore bindings
* Breaking Changes
+ Upgrade to .NET Core 3.1 (LTS)
+ Implement DEFAULT_MAX_LENGTH at TFramedTransport
+ In Go library TDeserializer.Transport is now
typed *TMemoryBuffer instead of TTransport
+ Haskell generator fails to distinguish between multiple enum
types with conflicting enum identifiers
+ Upgrade NodeJS to 10.x
+ Swift generator does not escape keywords properly
+ In Go library TProcessor interface now includes ProcessorMap
and AddToProcessorMap functions.
+ cpp: use all getaddrinfo() results when retrying failed bind()
in T{Nonblocking,}ServerSocket
+ Now all Read, Write and Skip functions in TProtocol accept
context arg
+ go: TSocket and TSSLSocket now have separated connect timeout
and socket timeout
+ cpp: dropped support for Windows XP
+ TException interface now has a new function: TExceptionType
+ go: TClient.Call now returns ResponseMeta in addition to error
* Full: https://github.com/apache/thrift/blob/0.14.1/CHANGES.md
-------------------------------------------------------------------
Sat Jan 2 20:07:17 UTC 2021 - Benjamin Greiner <code@bnavigator.de>
- Build library for all parallel installable python3 flavors
gh#openSUSE/python-rpm-macros#66
-------------------------------------------------------------------
Fri Mar 6 09:25:41 UTC 2020 - Nico Kruber <nico.kruber@gmail.com>
- Update to 0.13.0
(full log https://github.com/apache/thrift/blob/0.13.0/CHANGES.md)
* Deprecated Languages:
+ CSharp and Netcore targets (use NetStd instead)
* Removed Languages:
+ Cocoa
* Breaking changes:
+ compiler: removed the plug-in mechanism
+ cpp: C++03/C++98 support has been removed; also removed
boost as a runtime dependency
+ cpp: BoostThreadFactory, PosixThreadFactory,
StdThreadFactory removed
+ cpp: CMake build changed to use BUILD_SHARED_LIBS
+ cpp: Removed Qt4 support
+ cpp: Use std::chrono::duration for timeouts
+ cpp: TTransport::getOrigin() is now const
+ java: class org.apache.thrift.AutoExpandingBuffer is no
longer public
+ java: changes to UTF-8 handling require JDK 1.7 at a minimum
+ java: class org.apache.thrift.ShortStack is no longer public
+ java: change return type signature of 'process' methods
+ java: replaced TSaslTransportException with TTransportException
+ java: TIOStreamTransport's "isOpen" now returns false after
"close" is called
+ js: now uses node-int64 for 64 bit integer constants
+ delphi: old THTTPTransport is now TMsxmlHTTPTransport
+ rust: convert from try-from crate to rust stable (1.34+),
re-export ordered-float
* Known Issues (Blocker or Critical)
+ C++: library doesn't work with HTTP (csharp server, cpp client)
- Update keyring file from official KEYS file:
https://www.apache.org/dist/thrift/KEYS
-------------------------------------------------------------------
Wed Mar 4 16:17:05 UTC 2020 - Antonio Larrosa <alarrosa@suse.com>
- python3-backports.ssl_match_hostname should be recommended only
when python3 is older than 3.5, so use the python3 version, not
the python2 one.
-------------------------------------------------------------------
Wed Mar 4 12:28:25 UTC 2020 - Antonio Larrosa <alarrosa@suse.com>
- The python3 subpackage now depends on python3 packages, not python2
-------------------------------------------------------------------
Thu Sep 12 11:51:24 UTC 2019 - Vítězslav Čížek <vcizek@suse.com>
- Add missing zlib build dependency which used to be pulled in
by libopenssl-devel, the libthriftz subpackage won't get build
without it (bsc#1149792)
-------------------------------------------------------------------
Mon Apr 15 19:38:58 UTC 2019 - Jan Engelhardt <jengelh@inai.de>
- Trim descriptions for a bit of size reduction and diversify summaries.
- Remove %if..%endif guards that do not affect the build result.
-------------------------------------------------------------------
Mon Apr 15 13:53:13 UTC 2019 - Martin Pluskal <mpluskal@suse.com>
- Split shared libraries to subpackages
- Small packaging cleanups
-------------------------------------------------------------------
Wed Apr 10 11:35:09 UTC 2019 - Martin Pluskal <mpluskal@suse.com>
- Update keyring file
-------------------------------------------------------------------
Mon Apr 8 17:58:45 UTC 2019 - John Vandenberg <jayvdb@gmail.com>
- Fix Python 3 package, which consisted of only a broken egg-info
- Add missing runtime dependencies of Python 2 and 3 packages,
and add Recommends and Suggests for the same
- Use %license
- Add %doc and %license to the Python and Perl packages
- Fix Provides/Obsoletes of the old python package
- Update to 0.12.0:
(full log https://github.com/apache/thrift/blob/0.12.0/CHANGES)
* New Languages:
+ Common LISP (cl)
+ Swift
+ Typescript (nodets)
* Deprecated Languages:
+ Cocoa
* Breaking changes:
+ Rust enum variants are now camel-cased instead of uppercased
to conform to Rust naming conventions
+ Support for golang 1.6 and earlier has been dropped
+ PHP now uses PSR-4 loader by default instead of class maps
+ method signatures changed in the compiler's t_oop_generator
+ The C GLib compiler handling of namespaces has been improved
-------------------------------------------------------------------
Fri May 4 13:19:34 UTC 2018 - mrostecki@suse.com
- Update to 0.11.0:
https://github.com/apache/thrift/blob/master/CHANGES#L10-L297
-------------------------------------------------------------------
Fri Nov 10 13:50:10 UTC 2017 - mpluskal@suse.com
- Enable python3 support as well
- Use naming of python subpackages that is consistent with current
Factory conventions
-------------------------------------------------------------------
Wed Jun 14 07:19:46 UTC 2017 - mpluskal@suse.com
- Update to version 0.10.0:
* lots of changes, see provided CHANGES for details
* fixes building with recent openss (boo#1042675)
- Switch from qt4 to qt5
-------------------------------------------------------------------
Thu Feb 2 15:08:22 UTC 2017 - adam.majer@suse.de
- use individual libboost-*-devel packages instead of boost-devel
-------------------------------------------------------------------
Mon Jun 13 17:34:49 UTC 2016 - mpluskal@suse.com
- Fix a typo in changelog
-------------------------------------------------------------------
Sat Apr 16 21:39:16 UTC 2016 - mpluskal@suse.com
- Update to 0.9.3
* numerous changes, see provided CHANGES for details
-------------------------------------------------------------------
Thu Mar 5 21:11:12 UTC 2015 - mpluskal@suse.com
- Simplify buildconditions
-------------------------------------------------------------------
Mon Mar 2 18:44:32 UTC 2015 - mpluskal@suse.com
- Disable building of static library
- Do not manually set LDFLAGS
-------------------------------------------------------------------
Mon Mar 2 14:23:16 UTC 2015 - mpluskal@suse.com
- Remove obsolete patches
* 0001-Add-missing-limits-header.patch
* 0002-TNonblockingServer-TLibEventTransport.patch
* 0003-TDenseProtocol.patch
- Update library name to match shlib naming policy
- Update to 0.9.2
* numerous changes, see provide CHANGES for details
-------------------------------------------------------------------
Sat Feb 22 20:05:26 UTC 2014 - opensuse@dstoecker.de
- enable perl and python packages
- remove extension patches
-------------------------------------------------------------------
Thu Feb 20 20:49:32 UTC 2014 - opensuse@dstoecker.de
- update to 0.9.1
-------------------------------------------------------------------
Wed Sep 25 08:54:20 UTC 2013 - d.desai@rtsgroup.net
- number of bytes written to transport and number of bytes
returned from write() method was not same. Fixed this
problem in TDenseProtocol.
-------------------------------------------------------------------
Thu Aug 15 15:15:51 UTC 2013 - o.herrmann217@googlemail.com
- Extended 0002-TNonblockingServer-TLibEventTransport.patch to
properly close TConnection when a client disconnects while
still receiving updates from libevent.
-------------------------------------------------------------------
Wed Aug 7 12:07:33 UTC 2013 - d.desai@rtsgroup.net
- Fixed multiple crashes in TNonblockingServer to work with lib_event.
-------------------------------------------------------------------
Fri Jun 21 11:12:57 UTC 2013 - o.herrmann217@googlemail.com
- Changed 0002-TNonblockingServer-TLibEventTransport.patch to
install new header file with automake.
-------------------------------------------------------------------
Thu Jun 20 21:12:12 UTC 2013 - o.herrmann217@googlemail.com
- Replaced std::tr1::bind with boost::bind in TNonblockingServer
to fix compilation error on RHEL 5.
-------------------------------------------------------------------
Thu Jun 20 11:51:54 UTC 2013 - o.herrmann217@googlemail.com
- Removed BuildRequires for boost-static
-------------------------------------------------------------------
Thu Jun 20 11:13:43 UTC 2013 - o.herrmann217@googlemail.com
- Created new patch for integrating external libevent clients in
TNonblockingServer.
- Removed 0003-TNonblokingServer-release-handler-on-close.patch.
It is now part of 0002-TNonblockingServer-TLibEventTransport.patch
-------------------------------------------------------------------
Tue May 14 07:40:45 UTC 2013 - d.desai@rtsgroup.net
- Reverted changes for dependency of openssl for sles_11.
-------------------------------------------------------------------
Tue May 14 07:02:05 UTC 2013 - d.desai@rtsgroup.net
- Added dependency of openssl for sles_11.
-------------------------------------------------------------------
Mon May 13 15:30:08 UTC 2013 - d.desai@rtsgroup.net
- Created patch 0003 to release handler on close in
TNonblockingServer
-------------------------------------------------------------------
Thu May 9 12:23:02 UTC 2013 - o.herrmann217@googlemail.com
- Fixed reset of smart pointer in patch 0002
-------------------------------------------------------------------
Thu May 9 11:16:57 UTC 2013 - o.herrmann217@googlemail.com
- Created patch 0002 to access event_base from libevent in
TNonblockingServer
-------------------------------------------------------------------
Wed Jan 23 18:26:38 UTC 2013 - d.desai@rtsgroup.net
- Removed boost version
-------------------------------------------------------------------
Wed Jan 23 14:51:46 UTC 2013 - o.herrmann217@googlemail.com
- Build with --hash-style=sysv
-------------------------------------------------------------------
Sun Dec 2 13:58:46 UTC 2012 - o.herrmann217@googlemail.com
- Striped one directory in patch 0001
-------------------------------------------------------------------
Sun Dec 2 13:41:57 UTC 2012 - o.herrmann217@googlemail.com
- Patch for missing limit headers
-------------------------------------------------------------------
Sun Dec 2 12:40:06 UTC 2012 - o.herrmann217@googlemail.com
- Call make with -j1 to fix compile problem temporally
-------------------------------------------------------------------
Tue Nov 27 21:58:37 UTC 2012 - jblunck@opensuse.org
- Update to 0.9.0
-------------------------------------------------------------------
Fri Jul 30 17:26:10 UTC 2010 - dmacvicar@novell.com
- initial package for 0.2.0