Skip to content

v1.4.rc0

Compare
Choose a tag to compare
@stefano-maggiolo stefano-maggiolo released this 02 Oct 21:50
· 26 commits to v1.4 since this release

Continuing with the process started in the 1.3 branch, we release today a candidate for CMS version 1.4. CMS 1.4.rc0 is a stable version, so we recommended it over the old 1.3 for anybody new to CMS. If you are currently using CMS 1.3, we will continue backporting security fixes until the 1.4.0 release, but you should start thinking now about migrating.

Having a release candidate allows us to include in 1.4.0 not only bugfixes but also contained improvements; in particular, we encourage updating the translations of the contest interface and sending them to us; see https://cms.readthedocs.io/en/v1.4/Localization.html#for-translators for instructions.

Finally, before the changelog, a thank you to all the people that helped shape CMS 1.4, with code contributions but also with bug reports, testing, discussions, ... If you want to participate, join the gitter chat at https://gitter.im/cms-dev/cms.

What's new

  • Web Servers

    • Added analysis phase (contestants can see the full feedback and send "unofficial" submissions with no limits and no effect on scores).
    • Admins can limit the feedback given to contestants to prevent reverse engineering; limited feedback is the default for new contests.
    • Single instances of ContestWebServer and ResourceService can handle multiple contests.
    • The ranking in AdminWebServer is now sortable.
    • AdminWebServer shows the name of the admin that answered a question or sent an announcement/message.
    • Contestants can see the task score in the task submission page.
    • Contestants' passwords can be stored hashed (with bcrypt).
    • Changed the STL documentation from SGI to cppreference.com.
    • Files are not fully loaded in memory while being downloaded.
  • Grading

    • Improved safety of task types:
      • All operations have a timeout, even those supposedly safe (and compilation limits are tweakable via hidden configurations).
      • Sandboxes are not recycled between evaluation and checking.
      • Deprecated TwoSteps as Communication is a safer replacement.
    • Allowed stub-less compilation and standard I/O in Communication tasks.
    • Improved the validation of the task configurations, and error reporting.
    • Allowed memory limits higher than 2GB.
    • Fixed issues with user tests when using managers.
  • Scoring

    • Added score mode for the sum over all subtasks of the best score over all submissions (as in IOI 2017-2018).
    • Added support for subtask with a maximum score of zero (useful for example for giving contestants testcases to validate their solutions, but not providing any points).
  • Languages

    • Added support for Rust, Python 3, and C#.
    • Python 2 and 3: added support for graders (for Batch tasks) and stubs (for Communication tasks).
    • C/C++: enabled GNU extensions in compilation.
    • Pascal: enabled symbol stripping and recommended lighter FPC installation (without optional units).
  • Updates

    • CMS now runs under both Python 2 and Python 3.
      • Python 2 support will be dropped starting from the next version.
    • Updated isolate to v1.6.
    • Updated polygon's testlib.h to version 0.9.21.
    • Updated database model (among other changes, used better types).
      • To update a contest running on a previous version: dump it using the old version, update CMS, drop and re-init the database, reimport the dump.
    • Upgraded dependencies' versions to those found in Ubuntu 18.04.
  • Scripts

    • Improved ExportSubmission: more task types are supported and more formatting options.
    • Added importer for Task Preparation System.
  • Internals

    • Vastly increased code coverage for both unit and functional tests.
    • Eased plugging-in task types, score types, and languages by using setuptools' entry points.
    • Extracted and tested several pieces of business logic in ContestWebServer and in the grading module.
    • Switched from Tornado to Jinja2 (for templates) and Babel (for localization).
    • Fixed the database schema so that PostgreSQL’s vacuum tool does not think CMS's files are unused and can be removed.
    • Printjobs are now exported correctly in the dumps.