Kallithea 0.6.0 released

We are pleased to announce Kallithea 0.6.0, with as most important change the migration from Python 2 to Python 3.

In addition to migrating to Python 3, there has been a lot of (big) internal cleanup, improvements and fixes in several areas. Unavoidably, this also means a risk of having introduced new bugs or regressions.

Password hashing on Windows is now also done with bcrypt like on Unix/Linux, although the original sha256 password hashes are still recognized.

Support for Mercurial 5.4 was added.

The Celery support code has been reworked to use version 4 instead of 3. Along with that, the Celery configuration settings in the .ini file have changed too.

The uWSGI configuration template has been tweaked.

Some internal caching functionality has been dropped. The caching was complex, had some overhead, and was not entirely reliable. Some performance benchmarks might have regressed, but overall performance should have improved in most real world setups with multiple worker processes and multiple repositories.

See 'Changes' below for a more detailed list of changes most relevant to users.

Upgrading from 0.5.x

Please refer to the upgrade instructions in the documentation for detailed steps: https://kallithea.readthedocs.io/en/stable/upgrade.html. Below are just some specific notes.

As mentioned in the upgrade instructions, generate a new configuration file and apply the necessary changes to fit your installation. There have been changes in the configuration file; starting from the old one would be a source of errors or confusion.

There are also some minor database migration steps.

Changes

Below are the most relevant changes between 0.5.2 and 0.6.0. Note that it is not a complete list: many changes are purely internal refactoring. Please refer to the source repository if you are interested in full details.

API

  • better error logging for API usage errors - say which request failed to encode response cs

Authentication

  • also use safe password hashing on Windows using bcrypt cs

Caching

  • drop unused repo model cache cs
  • drop problematic sql_cache_short beaker cache and related code cs
  • drop repository CacheInvalidation cs
  • introduce long_term_file beaker cache to store README and RSS cache on disk where it is reusable between processes - not in worker memory cs

Celery

  • upgrade to Celery 4 cs
  • fix logging from inside tasks cs
  • fix send_email to work with JSON encoding (Issue #363) cs
  • drop deprecated celery.result.dburi cs
  • fix spelling of celery.result.serializer cs

CLI commands

  • config-create: show options used for generating .ini, and list what alternative values are supported cs
  • fix --full option of index-create cs
  • fix indexing of repos where last indexed revision has been stripped cs

Configuration file (ini)

  • tweak template configuration for TurboGears2's handling of application errors cs
  • drop AppEnlight from configuration template - it seems to be dead and disappeared cs
  • uwsgi: slim down and tweak the default [uwsgi] configuration section cs cs2
  • uwsgi: drop unnecessary dependency of http module - just use http-socket directly cs
  • uwsgi: clarify that --ini-paste-logged currently requires pastescript cs
  • better detection and logging of invalid configuration of 'issue patterns' cs cs2 cs3

Database

  • drop superfluous space in UserGroup relationship definition cs

Documentation

  • ssh: mention how to use multiple authorized_keys files cs

Email templates

  • fix missing translation of titles and buttons cs

User interface

  • fix page navigation/scrolling when toggling "Follow" status cs
  • journal feed: don't include email in author name - avoid double data cs
  • show toggleable "Follow" status in repo groups' repo list cs
  • use fork icon for the fork option (Issue #356) cs

Version control systems support

Mercurial

  • bump minimum Mercurial version to 5.1 cs
  • support Mercurial 5.4 cs
  • always show and run Mercurial hooks in alphabetical order (Issue #246) cs
  • read everything from hgrc, without config section whitelisting (Issue #246) cs
  • set HGPLAIN globally to minimize potential impact from reading hgrc configuration cs

Other changes

  • docs: fix contributing.rst reference to Session.remove() cs
  • i18n: update translations for French, German, Greek, Luxembourgish, Russian, Polish
  • make error reporting by mail work with secure mail servers cs
  • officially support Python 3 cs
  • setup: various version bumps of external dependencies
  • setup: install pip in virtualenv to make sure we have the latest version cs
  • windows: fix import of posix-only pwd module (Issue #367) cs

Thanks

We would like to thank everyone that contributed to the Kallithea repository (directly or by updating translations in Weblate) since release 0.5.2 (the numbers are the amount of commits)...

339 Mads Kiilerich
 23 Thomas De Schampheleire
  3 Ross Thomas
  3 J. Lavoie
  2 Private
  1 robertus
  1 Dennis Fink
  1 Asterios Dimitriou
  1 Étienne Gilli

... as well as everyone contributing in other ways, e.g. by testing, reporting issues, discussing via mail or IRC, etc.