changes:
-Widget cleanups
-Add dialog version of the font selector
-Enhance canvas with possibility of css
-Improve printing of grey patterns
-Make narrow versions of combos for vertical toolbars
-bugfixes
- 0.46 | 2013-03-14
- bugfix: handle connection options w/o "backup" env var
Previously, ‘pg-conndefaults’ expected every option to have a
backup env var (e.g., option ‘#:host’ and env var ‘PGHOST’).
For later versions of PostgreSQL which no longer maintain this
1:1 correspondance, Guile-PG would segfault.
Now, in such cases, the value associated w/ the key ‘#:envvar’
in the alist returned by ‘pg-conndefaults’ is ‘#f’.
- planned retirement
- procedure ‘(database postgres) pg-getline’
- procedure ‘(database postgres) pg-getlineasync’
- procedure ‘(database postgres) pg-putline’
- procedure ‘(database postgres) pg-endcopy’
These procedures are obsoleted by ‘pg-get-copy-data’ and
‘pg-put-copy-data’. They WILL BE REMOVED by 2013-12-31.
Actually, the first two were originally -- in Guile-PG 0.41
(2011-09-29) -- planned to be removed by 2012-12-31.
Support has been extended for solidarity w/ the latter two.
- bootstrap tools upgraded
- GNU Texinfo 5.1
Copyright (C) 2002-2013 Thien-Thi Nguyen
Copying and distribution of this file, with or without modification,
are permitted provided the copyright notice and this notice are preserved.
* fixes crash when recieve unknown entity format.
* openimg: update support of yfrog and instagram.
* extract: backport from 0.2.2, fixes crash.
* directmessage: fix to be fired when DM to myself.
Add test target
Upstream changes:
3.0.1
Apr 8, 2013
The interface of tornado.auth.FacebookGraphMixin is now consistent with its documentation and the rest of the module. The get_authenticated_user and facebook_request methods return a Future and the callback argument is optional.
The tornado.testing.gen_test decorator will no longer be recognized as a (broken) test by nose.
Work around a bug in Ubuntu 13.04 betas involving an incomplete backport of the ssl.match_hostname function.
tornado.websocket.websocket_connect now fails cleanly when it attempts to connect to a non-websocket url.
tornado.testing.LogTrapTestCase once again works with byte strings on Python 2.
The request attribute of tornado.httpclient.HTTPResponse is now always an ~tornado.httpclient.HTTPRequest, never a _RequestProxy.
Exceptions raised by the tornado.gen module now have better messages when tuples are used as callback keys.
3.0.0
Mar 29, 2013
Highlights
The callback argument to many asynchronous methods is now optional, and these methods return a .Future. The tornado.gen module now understands Futures, and these methods can be used directly without a .gen.Task wrapper.
New function .IOLoop.current returns the .IOLoop that is running on the current thread (as opposed to .IOLoop.instance, which returns a specific thread's (usually the main thread's) IOLoop.
New class tornado.netutil.Resolver provides an asynchronous interface to DNS resolution. The default implementation is still blocking, but non-blocking implementations are available using one of three optional dependencies: ~tornado.netutil.ThreadedResolver using the concurrent.futures thread pool, tornado.platform.caresresolver.CaresResolver using the pycares library, or tornado.platform.twisted.TwistedResolver using twisted
Tornado's logging is now less noisy, and it no longer goes directly to the root logger, allowing for finer-grained configuration.
New class tornado.process.Subprocess wraps subprocess.Popen with .PipeIOStream access to the child's file descriptors.
.IOLoop now has a static configure <.Configurable.configure> method like the one on .AsyncHTTPClient, which can be used to select an .IOLoop implementation other than the default.
.IOLoop can now optionally use a monotonic clock if available (see below for more details).
Backwards-incompatible changes
Python 2.5 is no longer supported. Python 3 is now supported in a single codebase instead of using 2to3
The tornado.database module has been removed. It is now available as a separate package, torndb
Functions that take an io_loop parameter now default to .IOLoop.current() instead of .IOLoop.instance().
Empty HTTP request arguments are no longer ignored. This applies to HTTPRequest.arguments and RequestHandler.get_argument[s] in WSGI and non-WSGI modes.
On Python 3, tornado.escape.json_encode no longer accepts byte strings.
On Python 3, the get_authenticated_user methods in tornado.auth now return character strings instead of byte strings.
tornado.netutil.TCPServer has moved to its own module, tornado.tcpserver.
The Tornado test suite now requires unittest2 when run on Python 2.6.
tornado.options.options is no longer a subclass of dict; attribute-style access is now required.
Detailed changes by module
Multiple modules
Tornado no longer logs to the root logger. Details on the new logging scheme can be found under the tornado.log module. Note that in some cases this will require that you add an explicit logging configuration in order to see any output (perhaps just calling logging.basicConfig()), although both .IOLoop.start() and tornado.options.parse_command_line will do this for you.
On python 3.2+, methods that take an ssl_options argument (on .SSLIOStream, .TCPServer, and .HTTPServer) now accept either a dictionary of options or an ssl.SSLContext object.
New optional dependency on concurrent.futures to provide better support for working with threads. concurrent.futures is in the standard library for Python 3.2+, and can be installed on older versions with pip install futures.
tornado.autoreload
tornado.autoreload is now more reliable when there are errors at import time.
Calling tornado.autoreload.start (or creating an .Application with debug=True) twice on the same .IOLoop now does nothing (instead of creating multiple periodic callbacks). Starting autoreload on more than one .IOLoop in the same process now logs a warning.
Scripts run by autoreload no longer inherit __future__ imports used by Tornado.
tornado.auth
On Python 3, the get_authenticated_user method family now returns character strings instead of byte strings.
Asynchronous methods defined in tornado.auth now return a .Future, and their callback argument is optional. The Future interface is preferred as it offers better error handling (the previous interface just logged a warning and returned None).
The tornado.auth mixin classes now define a method get_auth_http_client, which can be overridden to use a non-default .AsyncHTTPClient instance (e.g. to use a different .IOLoop)
Subclasses of .OAuthMixin are encouraged to override .OAuthMixin._oauth_get_user_future instead of _oauth_get_user, although both methods are still supported.
tornado.concurrent
New module tornado.concurrent contains code to support working with concurrent.futures, or to emulate future-based interface when that module is not available.
tornado.curl_httpclient
Preliminary support for tornado.curl_httpclient on Python 3. The latest official release of pycurl only supports Python 2, but Ubuntu has a port available in 12.10 (apt-get install python3-pycurl). This port currently has bugs that prevent it from handling arbitrary binary data but it should work for textual (utf8) resources.
Fix a crash with libcurl 7.29.0 if a curl object is created and closed without being used.
tornado.escape
On Python 3, ~tornado.escape.json_encode no longer accepts byte strings. This mirrors the behavior of the underlying json module. Python 2 behavior is unchanged but should be faster.
tornado.gen
New decorator @gen.coroutine is available as an alternative to @gen.engine. It automatically returns a .Future, and within the function instead of calling a callback you return a value with raise gen.Return(value) (or simply return value in Python 3.3).
Generators may now yield .Future objects.
Callbacks produced by .gen.Callback and .gen.Task are now automatically stack-context-wrapped, to minimize the risk of context leaks when used with asynchronous functions that don't do their own wrapping.
Fixed a memory leak involving generators, .RequestHandler.flush, and clients closing connections while output is being written.
Yielding a large list no longer has quadratic performance.
tornado.httpclient
.AsyncHTTPClient.fetch now returns a .Future and its callback argument is optional. When the future interface is used, any error will be raised automatically, as if .HTTPResponse.rethrow was called.
.AsyncHTTPClient.configure and all .AsyncHTTPClient constructors now take a defaults keyword argument. This argument should be a dictionary, and its values will be used in place of corresponding attributes of ~tornado.httpclient.HTTPRequest that are not set.
All unset attributes of tornado.httpclient.HTTPRequest are now None. The default values of some attributes (connect_timeout, request_timeout, follow_redirects, max_redirects, use_gzip, proxy_password, allow_nonstandard_methods, and validate_cert have been moved from ~tornado.httpclient.HTTPRequest to the client implementations.
The max_clients argument to .AsyncHTTPClient is now a keyword-only argument.
Keyword arguments to .AsyncHTTPClient.configure are no longer used when instantiating an implementation subclass directly.
Secondary .AsyncHTTPClient callbacks (streaming_callback, header_callback, and prepare_curl_callback) now respect .StackContext.
tornado.httpserver
.HTTPServer no longer logs an error when it is unable to read a second request from an HTTP 1.1 keep-alive connection.
.HTTPServer now takes a protocol keyword argument which can be set to https if the server is behind an SSL-decoding proxy that does not set any supported X-headers.
tornado.httpserver.HTTPConnection now has a set_close_callback method that should be used instead of reaching into its stream attribute.
Empty HTTP request arguments are no longer ignored. This applies to HTTPRequest.arguments and RequestHandler.get_argument[s] in WSGI and non-WSGI modes.
tornado.ioloop
New function .IOLoop.current returns the IOLoop that is running on the current thread (as opposed to .IOLoop.instance, which returns a specific thread's (usually the main thread's) IOLoop).
New method .IOLoop.add_future to run a callback on the IOLoop when an asynchronous .Future finishes.
.IOLoop now has a static configure <.Configurable.configure> method like the one on .AsyncHTTPClient, which can be used to select an .IOLoop implementation other than the default.
The .IOLoop poller implementations (select, epoll, kqueue) are now available as distinct subclasses of .IOLoop. Instantiating .IOLoop will continue to automatically choose the best available implementation.
The .IOLoop constructor has a new keyword argument time_func, which can be used to set the time function used when scheduling callbacks. This is most useful with the time.monotonic function, introduced in Python 3.3 and backported to older versions via the monotime module. Using a monotonic clock here avoids problems when the system clock is changed.
New function .IOLoop.time returns the current time according to the IOLoop. To use the new monotonic clock functionality, all calls to .IOLoop.add_timeout must be either pass a datetime.timedelta or a time relative to .IOLoop.time, not time.time. (time.time will continue to work only as long as the IOLoop's time_func argument is not used).
New convenience method .IOLoop.run_sync can be used to start an IOLoop just long enough to run a single coroutine.
New method .IOLoop.add_callback_from_signal is safe to use in a signal handler (the regular .add_callback method may deadlock).
.IOLoop now uses signal.set_wakeup_fd where available (Python 2.6+ on Unix) to avoid a race condition that could result in Python signal handlers being delayed.
Method IOLoop.running() has been removed.
.IOLoop has been refactored to better support subclassing.
.IOLoop.add_callback and .add_callback_from_signal now take *args, **kwargs to pass along to the callback.
tornado.iostream
.IOStream.connect now has an optional server_hostname argument which will be used for SSL certificate validation when applicable. Additionally, when supported (on Python 3.2+), this hostname will be sent via SNI (and this is supported by tornado.simple_httpclient)
Much of .IOStream has been refactored into a separate class .BaseIOStream.
New class tornado.iostream.PipeIOStream provides the IOStream interface on pipe file descriptors.
.IOStream now raises a new exception tornado.iostream.StreamClosedError when you attempt to read or write after the stream has been closed (by either side).
.IOStream now simply closes the connection when it gets an ECONNRESET error, rather than logging it as an error.
IOStream.error no longer picks up unrelated exceptions.
.BaseIOStream.close now has an exc_info argument (similar to the one used in the logging module) that can be used to set the stream's error attribute when closing it.
.BaseIOStream.read_until_close now works correctly when it is called while there is buffered data.
Fixed a major performance regression when run on PyPy (introduced in Tornado 2.3).
tornado.log
New module containing .enable_pretty_logging and .LogFormatter, moved from the options module.
.LogFormatter now handles non-ascii data in messages and tracebacks better.
tornado.netutil
New class tornado.netutil.Resolver provides an asynchronous interface to DNS resolution. The default implementation is still blocking, but non-blocking implementations are available using one of three optional dependencies: ~tornado.netutil.ThreadedResolver using the concurrent.futures thread pool, tornado.platform.caresresolver.CaresResolver using the pycares library, or tornado.platform.twisted.TwistedResolver using twisted
New function tornado.netutil.is_valid_ip returns true if a given string is a valid IP (v4 or v6) address.
tornado.netutil.bind_sockets has a new flags argument that can be used to pass additional flags to getaddrinfo.
tornado.netutil.bind_sockets no longer sets AI_ADDRCONFIG; this will cause it to bind to both ipv4 and ipv6 more often than before.
tornado.netutil.bind_sockets now works when Python was compiled with --disable-ipv6 but IPv6 DNS resolution is available on the system.
tornado.netutil.TCPServer has moved to its own module, tornado.tcpserver.
tornado.options
The class underlying the functions in tornado.options is now public (tornado.options.OptionParser). This can be used to create multiple independent option sets, such as for subcommands.
tornado.options.parse_config_file now configures logging automatically by default, in the same way that ~tornado.options.parse_command_line does.
New function tornado.options.add_parse_callback schedules a callback to be run after the command line or config file has been parsed. The keyword argument final=False can be used on either parsing function to supress these callbacks.
tornado.options.define now takes a callback argument. This callback will be run with the new value whenever the option is changed. This is especially useful for options that set other options, such as by reading from a config file.
tornado.options.parse_command_line --help output now goes to stderr rather than stdout.
tornado.options.options is no longer a subclass of dict; attribute-style access is now required.
tornado.options.options (and .OptionParser instances generally) now have a .mockable() method that returns a wrapper object compatible with mock.patch <unittest.mock.patch>.
Function tornado.options.enable_pretty_logging has been moved to the tornado.log module.
tornado.platform.caresresolver
New module containing an asynchronous implementation of the .Resolver interface, using the pycares library.
tornado.platform.twisted
New class tornado.platform.twisted.TwistedIOLoop allows Tornado code to be run on the Twisted reactor (as opposed to the existing .TornadoReactor, which bridges the gap in the other direction).
New class tornado.platform.twisted.TwistedResolver is an asynchronous implementation of the .Resolver interface.
tornado.process
New class tornado.process.Subprocess wraps subprocess.Popen with .PipeIOStream access to the child's file descriptors.
tornado.simple_httpclient
SimpleAsyncHTTPClient now takes a resolver keyword argument (which may be passed to either the constructor or configure <.Configurable.configure>), to allow it to use the new non-blocking tornado.netutil.Resolver.
When following redirects, SimpleAsyncHTTPClient now treats a 302 response code the same as a 303. This is contrary to the HTTP spec but consistent with all browsers and other major HTTP clients (including CurlAsyncHTTPClient).
The behavior of header_callback with SimpleAsyncHTTPClient has changed and is now the same as that of CurlAsyncHTTPClient. The header callback now receives the first line of the response (e.g. HTTP/1.0 200 OK) and the final empty line.
tornado.simple_httpclient now accepts responses with a 304 status code that include a Content-Length header.
Fixed a bug in which SimpleAsyncHTTPClient callbacks were being run in the client's stack_context.
tornado.stack_context
.stack_context.wrap now runs the wrapped callback in a more consistent environment by recreating contexts even if they already exist on the stack.
Fixed a bug in which stack contexts could leak from one callback chain to another.
Yield statements inside a with statement can cause stack contexts to become inconsistent; an exception will now be raised when this case is detected.
tornado.template
Errors while rendering templates no longer log the generated code, since the enhanced stack traces (from version 2.1) should make this unnecessary.
The {% apply %} directive now works properly with functions that return both unicode strings and byte strings (previously only byte strings were supported).
Code in templates is no longer affected by Tornado's __future__ imports (which previously included absolute_import and division).
tornado.testing
New function tornado.testing.bind_unused_port both chooses a port and binds a socket to it, so there is no risk of another process using the same port. get_unused_port is now deprecated.
New decorator tornado.testing.gen_test can be used to allow for yielding tornado.gen objects in tests, as an alternative to the stop and wait methods of .AsyncTestCase.
tornado.testing.AsyncTestCase and friends now extend unittest2.TestCase when it is available (and continue to use the standard unittest module when unittest2 is not available)
tornado.testing.ExpectLog can be used as a finer-grained alternative to tornado.testing.LogTrapTestCase
The command-line interface to tornado.testing.main now supports additional arguments from the underlying unittest module: verbose, quiet, failfast, catch, buffer.
The deprecated --autoreload option of tornado.testing.main has been removed. Use python -m tornado.autoreload as a prefix command instead.
The --httpclient option of tornado.testing.main has been moved to tornado.test.runtests so as not to pollute the application option namespace. The tornado.options module's new callback support now makes it easy to add options from a wrapper script instead of putting all possible options in tornado.testing.main.
.AsyncHTTPTestCase no longer calls .AsyncHTTPClient.close for tests that use the singleton .IOLoop.instance.
.LogTrapTestCase no longer fails when run in unknown logging configurations. This allows tests to be run under nose, which does its own log buffering (.LogTrapTestCase doesn't do anything useful in this case, but at least it doesn't break things any more).
tornado.util
tornado.util.b (which was only intended for internal use) is gone.
tornado.web
.RequestHandler.set_header now overwrites previous header values case-insensitively.
tornado.web.RequestHandler has new attributes path_args and path_kwargs, which contain the positional and keyword arguments that are passed to the get/post/etc method. These attributes are set before those methods are called, so they are available during prepare()
tornado.web.ErrorHandler no longer requires XSRF tokens on POST requests, so posts to an unknown url will always return 404 instead of complaining about XSRF tokens.
Several methods related to HTTP status codes now take a reason keyword argument to specify an alternate "reason" string (i.e. the "Not Found" in "HTTP/1.1 404 Not Found"). It is now possible to set status codes other than those defined in the spec, as long as a reason string is given.
The Date HTTP header is now set by default on all responses.
Etag/If-None-Match requests now work with .StaticFileHandler.
.StaticFileHandler no longer sets Cache-Control: public unnecessarily.
When gzip is enabled in a tornado.web.Application, appropriate Vary: Accept-Encoding headers are now sent.
It is no longer necessary to pass all handlers for a host in a single .Application.add_handlers call. Now the request will be matched against the handlers for any host_pattern that includes the request's Host header.
tornado.websocket
Client-side WebSocket support is now available: tornado.websocket.websocket_connect
.WebSocketHandler has new methods ~.WebSocketHandler.ping and ~.WebSocketHandler.on_pong to send pings to the browser (not supported on the draft76 protocol)
Update DEPENDS
Upstream changes:
0.08250 2013-04-29 22:00 (UTC)
* New Features / Changes
- Rewrite from scratch the result constructor codepath - many bugfixes
and performance improvements (the current codebase is now capable of
outperforming both DBIx::DataModel and Rose::DB::Object on some
workloads). Some notable benefits:
- Multiple has_many prefetch
- Partial prefetch - you now can select only columns you are
interested in, while preserving the collapse functionality
(collapse is now exposed as a first-class API attribute)
- Prefetch of resultsets with arbitrary order
(RT#54949, RT#74024, RT#74584)
- Prefetch no longer inserts right-side table order_by clauses
(massively helps the deficient MySQL optimizer)
- Prefetch with limit on right-side ordered resultsets now works
correctly (via aggregated grouping)
- No longer order the insides of a complex prefetch subquery,
unless required to satisfy a limit
- Stop erroneously considering order_by criteria from a join under
distinct => 1 (the distinct should apply to the main source only)
- Massively optimize codepath around ->cursor(), over 10x speedup
on some iterating workloads.
- Support standalone \[ $sql, $value ] in literal SQL with bind
specifications: \[ '? + ?', 42, 69 ] is now equivalent to
\[ '? + ?', [ {} => 42 ], [ {} => 69 ] ]
- Changing the result_class of a ResultSet in progress is now
explicitly forbidden. The behavior was undefined before, and
would result in wildly differing outcomes depending on $rs
attributes.
- Deprecate returning of prefetched 'filter' rels as part of
get_columns() and get_inflated_columns() data
- Invoking get_inflated_columns() no longer fires get_columns() but
instead retrieves data from individual non-inflatable columns via
get_column()
- Emit a warning on incorrect use of nullable columns within a
primary key
- Limited checks are performed on whether columns without declared
is_nullable => 1 metadata do in fact sometimes fetch NULLs from
the database (the check is currently very limited and is performed
only on resultset collapse when the alternative is rather worse)
* Fixes
- Fix _dbi_attrs_for_bind() being called befor DBI has been loaded
(regression in 0.08210)
- Fix update/delete operations on resultsets *joining* the updated
table failing on MySQL. Resolves oversights in the fixes for
RT#81378 and RT#81897
- Fix open cursors silently resetting when inherited across a fork
or a thread
- Properly support "MySQL-style" left-side group_by with prefetch
- Fix $grouped_rs->get_column($col)->func($func) producing incorrect
SQL (RT#81127)
- Stop Sybase ASE storage from generating invalid SQL in subselects
when a limit without offset is encountered
- Even more robust behavior of GenericSubQuery limit dialect
- Make sure deployment_statements() and cursor_class() are called on
a resolved storage subclass
* Misc
- Fix tests failing due to unspecified resultset retrieval order
(test suite now will pass with newest SQLite libs)
0.08210 2013-04-04 15:30 (UTC)
* New Features / Changes
- Officially deprecate the 'cols' and 'include_columns' resultset
attributes
- Remove ::Storage::DBI::sth() deprecated in 0.08191
* Fixes
- Work around a *critical* bug with potential for data loss in
DBD::SQLite - RT#79576
- Audit and correct potential bugs associated with braindead reuse
of $1 on unsuccessful matches
- Fix incorrect warning/exception originator reported by carp*() and
throw_exception()
0.08209 2013-03-01 12:56 (UTC)
* New Features / Changes
- Debugging aid - warn on invalid result objects created by what
seems like an invalid inheritance hierarchy
* Fixes
- Fix another embarrassing regression preventing correct refining of
the search criteria on a prefetched relation (broken in 0.08205)
- Fix incorrect callsite reporting by DBIC::Carp
0.08208 2013-02-20 09:56 (UTC)
* New Features / Changes
- A bunch of nonsensically named arguments to the SQL::Translator
parser have been marked as deprecated (while still fully
supported)
* Fixes
- Fix duplicated selected columns when calling 'count' when a same
aggregate function is used more than once in a 'having' clause
(RT#83305)
- Prevent SQL::Translator::Producer::YAML from seeing the $dbh
in a potentially connected $schema instance (RT#75394)
* Misc
- Fixup our distbuilding process to stop creating world-writable
tarball contents (implicitly fixes RT#83084)
- Added strict and warnings tests for all lib and test files
0.08206 2013-02-08
* Fixes
- Fix dbh_do() failing to properly reconnect (regression in 0.08205)
- Extra sanity check of a fresh DBI handle ($dbh). Fixes
connection coderefs returning garbage (seen in the wild)
* Misc
- Only allow known globals in SQL::Translator leak allowance
- General cleanup of error message texts - quote names/identifiers
for easier reading
- Stop t/52leaks.t from failing when AUTOMATED_TESTING=1
Update DEPENDS
Upstream changes:
[0.24]
- Properly skip debugger test when optional deps not available
- Make sure pure-perl tests pass correctly on space-containing
paths (RT#77528)
- Remove all the pure-perl fallback code and depend on PP-capable
B::H::EOS 0.12
Update DEPENDS
Upstream changes:
0.12 Tue, 4 Dec 2012 20:13:00 +0000
* Complete pure-perl implementation in addition to the one based on
Variable::Magic. You can specify the implementation explicitly by
use-ing B::Hooks::EndOfScope::PP or B::Hooks::EndOfScope::XS, or
by setting $ENV{B_HOOKS_ENDOFSCOPE_IMPLEMENTATION} to either 'XS'
or 'PP'
* Switch from using Sub::Exporter to the more conservative
Sub::Exporter::Progressive
Upstream changes:
0.10010 2013-04-24 02:58 (UTC)
- Fix bug with identically-named 'simple' accessors in different
classes set to access *differently named fields* getting their
field access mixed up
- Fix subtle pessimization when having identically-named accessors
in different classes leads to 'simple' implementations not being
replaced by Class::XSAccessor where appropriate
em - the editor for mortals - is a variant of the standard Unix text
editor - ed. It includes all of ed, so the documentation for ed is
fully applicable to em. Em also has a number of new commands and
facilities designed to improve its interaction and increase its
usefulness.
Em differs from ed in that it normally prefixes command lines with a
'>'. For those who prefer silence, if the editor is invoked by any
name not having 'm' as its second character, no prompts will appear.
Other ways of controlling prompts are described below.
The em editor was designed for display terminals and was a
single-line-at-a-time visual editor. It was one of the first programs
on Unix to make heavy use of "raw terminal input mode", in which the
running program, rather than the terminal device driver, handled all
keystrokes.
Inspired by em, and by their own tweaks to ed, Bill Joy and Chuck
Haley, both graduate students at UC Berkeley, took code from em to
make en, and then "extended" en to create ex version 0.1.
This version was translated from V6 Unix C (mid-70s era) to the
present day by Pierre Gaston.
UPstream changes:
Changes in DBI 1.625 (svn r15595) 28th March 2013
Fixed heap-use-after-free during global destruction RT#75614
thanks to Reini Urban.
Changes in DBI 1.624 (svn r15576) 22nd March 2013
Fixed Gofer for hash randomization in perl 5.17.10+ RT#84146
Clarify docs for can() re RT#83207
Upstream changes:
3.27 2013-04-30
- Dramatically reduce memory usage (Nick Clark, RT #84939)
- Store test_num (in Grammar.pm) as a number instead of a string.
Reduces memory usage (Nick Clark, RT #84939)
- PERL5LIB is always propogated to a test's @INC, even with taint more
(Schwern, RT #84377)
3.26 2013-01-16
- Renamed env.opts.t to env_opts.t (for VMS)
- Skipped some TAP::Formatter::HTML tests due to this bug: #82738
Upstream changes:
0.52 ( 4-29-13 )
- Added proper binmode setting when outputting XML to address deficiences on Win32 ( such as failing Strawberry perl due to line endings )
- Added evil OS check in file writing code to address differences in how files must be opened to write utf8 on win32 versus linux/cygwin.
- Added note regarding using utf8 flag instead of using encoding(utf8)
- Altered UTF8 test to also write XML containing UTF8 to a file.
0.51 ( 4-28-13 )
- New 'unsafe' parsing mode, giving a 30% speed increase with some downfalls
- New 'read_more' function, allowing more data to be read in before parsing into a tree
- Fixed some memory leaks
- Added 'Controversy' section to documentation
- Updated speed comparisons for feed2.xml, adding a comparison against XML::Fast as well
as a comparison of running in 'unsafe' mode.
- Spelling correction
- "Modernized" file handling using my variables
0.50 ( 4-24-13 )
- Remove debugging print statements that were left in
- Include the new test cases in the distribution
0.49 ( 4-23-13 )
- Fixes to find_by_perl
Can now be accessed in an object or namespace flexibly.
Now ignores case of keys.
Keys with underscores can be used.
Will work properly when passed a single node instead of an array reference of nodes.
- Fixes to xget
Method of deferencing has been changed to be compatible with newer versions of perl ( 5.10.2+ )
- Fixed handling of nodes named 'value'; they will no longer crash the XS code
- Added a new function similar to new called 'simple', that works in the same way but automatically uses the 'simple' parser
- Altered handling of node values in simple mode, so that it stores values when mixed with nodes or atttributes under 'content' ( like XML::Simple )
This feature was requested by users so it has been added. Note that it only does this when the value is not composed of just spaces and carriage returns.
0.48 ( 4-22-13 )
- Revert code back to 0.45 version
Changes lost in the process:
Content is not stored in the 'content' key any more; it is stored as the node itself when the node contains nothing else. As God intended.
Memory leak fixes
Quote handling
- Code copyright returned fully to David Helkowski; any changes by other parties have been discarded. Any code ported in from other open source projects removed.
This has been done intentionally so as to make it possible to relicense the software commerically.
- XS code modofied to work in a multi-threaded environment
- Reverting Makefile.PL back to original wierd hackish fixes. They are there for specific reasons.
Release 1.10.0 (2013-05-01)
'''''''''''''''''''''''''''
New Features
------------
- The Welcome page has been redesigned. This is a preview of the design style
that is likely to be used in other parts of the WUI in future Tahoe-LAFS
versions. (`#1713`_, `#1457`_, `#1735`_)
- A new extensible Introducer protocol has been added, as the basis for
future improvements such as accounting. Compatibility with older nodes is
not affected. When server, introducer, and client are all upgraded, the
welcome page will show node IDs that start with "v0-" instead of the old
tubid. See `<docs/nodekeys.rst>`__ for details. (`#466`_)
- The web-API has a new ``relink`` operation that supports directly moving
files between directories. (`#1579`_)
Security Improvements
---------------------
- The ``introducer.furl`` for new Introducers is now unguessable. In previous
releases, this FURL used a predictable swissnum, allowing a network
eavesdropper who observes any node connecting to the Introducer to access
the Introducer themselves, and thus use servers or offer storage service to
clients (i.e. "join the grid"). In the new code, the only way to join a
grid is to be told the ``introducer.furl`` by someone who already knew it.
Note that pre-existing introducers are not changed. To force an introducer
to generate a new FURL, delete the existing ``introducer.furl`` file and
restart it. After doing this, the ``[client]introducer.furl`` setting of
every client and server that should connect to that introducer must be
updated. Note that other users of a shared machine may be able to read
``introducer.furl`` from your ``tahoe.cfg`` file unless you configure the
file permissions to prevent them. (`#1802`_)
- Both ``introducer.furl`` and ``helper.furl`` are now censored from the
Welcome page, to prevent users of your gateway from learning enough to
create gateway nodes of their own. For existing guessable introducer
FURLs, the ``introducer`` swissnum is still displayed to show that a
guessable FURL is in use. (`#860`_)
Command-line Syntax Changes
---------------------------
- Global options to ``tahoe``, such as ``-d``/``--node-directory``, must now
come before rather than after the command name (for example,
``tahoe -d BASEDIR cp -r foo: bar:`` ). (`#166`_)
Notable Bugfixes
----------------
- In earlier versions, if a connection problem caused a download failure for
an immutable file, subsequent attempts to download the same file could also
fail. This is now fixed. (`#1679`_)
- Filenames in WUI directory pages are now displayed correctly when they
contain characters that require HTML escaping. (`#1143`_)
- Non-ASCII node nicknames no longer cause WUI errors. (`#1298`_)
- Checking a LIT file using ``tahoe check`` no longer results in an
exception. (`#1758`_)
- The SFTP frontend now works with recent versions of Twisted, rather than
giving errors or warnings about use of ``IFinishableConsumer``. (`#1926`_,
`#1564`_, `#1525`_)
- ``tahoe cp --verbose`` now counts the files being processed correctly.
(`#1805`_, `#1783`_)
- Exceptions no longer trigger an unhelpful crash reporter on Ubuntu 12.04
("Precise") or later. (`#1746`_)
- The error message displayed when a CLI tool cannot connect to a gateway has
been improved. (`#974`_)
- Other minor fixes: `#1781`_, `#1812`_, `#1915`_, `#1484`_, `#1525`_
Other Changes
-------------
- The provisioning/reliability pages were removed from the main client's web
interface, and moved into a standalone web-based tool. Use the ``run.py``
script in ``misc/operations_helpers/provisioning/`` to access them.
- Web clients can now cache (ETag) immutable directory pages. (`#443`_)
- `<docs/convergence_secret.rst>`__ was added to document the adminstration
of convergence secrets. (`#1761`_)