Releases: cms-dev/cms
v1.4.rc1: Version 1.4.rc1
This is the second release candidate for version 1.4 of CMS, which improves on the previous one by fixing some bugs and updating some translations. It is considered stable and is recommended 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.
With this second RC we are further approaching the release of version 1.4.0. This will happen when, after greater adoption, we will become confident that the release will work smoothly for everyone. In the meantime we will continue to iron out any bug that gets reported and we encourage the community to submit updated translations of the contest interface; see https://cms.readthedocs.io/en/v1.4/Localization.html#for-translators for instructions.
What's new
- Updated Spanish, Latvian, Vietnamese and Lithuanian translations.
- Fixed the AWS web client being unable to issue RPCs (this affected the overview and resources pages, and the recompilation/evaluation/scoring buttons).
- Fixed the output of testcases not being included in contest dumps.
- Fixed RWS miscalculating the score when using the new score mode.
- Fixed the memory measurements not being displayed when they were between 1000 and 1023 KiB, MiB, ...
- Fixed the translations not being correctly installed on the first try.
- Fixed some evaluation details remaining hidden during the analysis phase.
- Fixed a malformed query in the user details page in AWS.
v1.4.rc0
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.
- Improved safety of task types:
-
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.
- CMS now runs under both Python 2 and Python 3.
-
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.
v1.3.2: Version 1.3.2
CMS 1.3.2 is a small bugfix release. Due to a security vulnerability in ContestWebServer, we strongly suggest to update from previous versions.
What's new
- Fix a security issue in CWS that could allow remote code execution by an attacker that knows the secret key.
- Don't leak the names of the task in CWS before the start of the contest.
v1.3.1: Version 1.3.1
CMS 1.3.1 is a small bugfix release. Due to a potentially exploitable bug in the isolate configuration, we strongly suggest to update from previous versions.
What's new
- Fix configuration of isolate to correctly account for the time used by all processes, that in certain cases could be wrong (see #913 for more information).
- Fix configuration of isolate to compute correctly memory usage when not using cgroups (by default, CMS uses cgroups).
- Mitigate the effect of an unexpected error when storing a submission result.
v1.3.0: Version 1.3.0
As announced, 1.3.0 is a small release after 1.3.rc0 containing small fixes, but also a few improvements.
What's new
- Updates to Dutch, Lithuanian and Vietnamese translations.
- Fix inability to submit in OutputOnly tasks.
- Don't recreate participations (and thus lose their submissions) when reimporting a contest.
- Remove a few short flags for some risky operations in scripts.
- Includes all the changes from 1.3.rc0: https://github.com/cms-dev/cms/wiki/CMS-1.3.rc0-RELEASE-NOTES
v1.3.rc0: Version 1.3.rc0
With CMS 1.2 we wanted to start a new process with smaller and more frequent releases. Looking at the 2 year gap between 1.2 and 1.3, it is clear that did not happen, but we are glad to be finally back!
Given the long time since 1.2, we decided to do things a bit differently, releasing first a CMS 1.3.rc0, with CMS 1.3.0 to follow up soon. In 1.3.0, we will not only include security bugs (similarly to a X.Y.1 release), but also small bug fixes if necessary.
CMS continues to be used all over the world. Since 1.2, it was used in IOI 2015, and will be used again in IOI 2017. We are also happy to mention that CMS has been used in APIO 2016 and CEOI 2015. As always, please continue to send feedback and testimonials. The full list is at http://cms-dev.github.io/testimonials.html .
We would like to thank the many people that worked on CMS 1.3! Also, we would like to apologize as the developer experience was often not optimal, especially in terms of latency of reviews and inclusion of pull requests.
What's new
A lot! To make things more organized, here are the major changes grouped by topic.
-
Features to ease long running contests and CMS-based training platforms.
- Users (contestants) now exist independently of contests.
- ES is contest agnostic: a single ES manages the submissions of all existing contests.
- Old executables can be removed from the database to save space.
-
Installation and configuration
- CMS works with virtualenv; thus avoiding the usual issues of using an incompatible version of a dependency.
- To ease debugging, sandboxes are not deleted in case of errors, even if
keep_sandboxes
is unset. - Moved some configurations from cms.conf to the contest entity (IP restrictions, whether to allow hidden users, whether to allow questions.
- IP based autologin: admins can decide to log in contestants automatically based on the IP of their machine.
- Per-contest configuration to disable the testing interface.
- Configuration to prevent contestants from downloading their previous submissions.
- Unrestricted users (with no limits on submissions, useful for tests).
-
Tasks types, score types and programming languages
- Some output from managers can be translated.
- Grouped score type allow defining groups using regexps on their names.
- Communication tasks support multiple contestant-led programs.
- Communication tasks work with all programming languages.
- Plugin system for programming languages, allows admin to easily define their own and a contest to have multiple versions of the same language (e.g., for different compilers).
- Java JDK support.
- Haskell support.
-
Performances
- ES distributes jobs in batches whose size depends on the load: small batches under light load to optimize for latency, larger batches under heavy load to optimize for throughput.
- Translated several queries from SQLAlchemy to raw SQL (especially in ES and SS)
- Big speedup in the queries used when showing submissions in CWS.
-
AdminWebServer
- A new page showing all submissions in a contest.
- Implemented real pagination for lists of submissions.
- Desktop notifications for questions.
- Teams and team associations can be edited in AWS.
- Administrative accounts (including accounts with lower permissions).
- Better forms (no duplication of create and edit, inline documentation of options).
- Single action to download all testcases.
- XSRF protection.
- Admins can delete users, tasks, contests from AWS.
- Admins can see user tests and their status.
-
ContestWebServer
- Desktop notifications for announcements and messages.
- Suggest task names as question subjects.
- Only allowed localizations are shown.
-
Command line tools
- Refactoring and improvements of cmsMake.
- Refactoring the scripts to add, remove, import data. Added a lot of new one.
-
Tests
- Tests run much faster thanks to parallel startup and more workers.
- We moved our continuous integration from a self-hosted Jenkins to Travis.
- Added a performance test for ES.
- Functional tests for user tests.
Incompatible updates.
- GroupThreshold does not consider any more the outcome 0.0 as success (too many parts of CMS already interpret 0.0 as failure).
- Both the database schema and the format of the dumps have changed. To update a dump, use
cmscontrib/DumpUpdater.py \<name of dump\>
. - To update the schema, first dump the content with
cmscontrib/DumpExporter.py
, then drop and reinit the database withcmsDropDB
andcmsInitDB
, update the dump as before and import it withcmscontrib/DumpImporter.py
- Alternatively, we support in-place updates with the SQL scripts in
cmscontrib/updaters
, but the process is still manual.
v1.2.0: Version 1.2.0
CMS 1.2 starts a new process of smaller, bi-annual releases that we hope to continue in the future. For news on the project, make sure to follow @contestms at https://twitter.com/contestms.
Since the previous release in July, CMS has been used by the IOI 2014, and confirmed by IOI 2015. We continue to have many users all around the world, and to ask you to send us feedback and testimonials, especially through the online forms at http://cms-dev.github.io/index.html#help-us-help-you .
Even more important, we would love to see more developers interested in improving CMS. There are several starter projects listed at http://cms-dev.github.io/contribute.html for you to get accustomed with the project. Many thanks to the people that already are contributing!
What's new
New features.
- Workers can evaluate testcases for the same submission in parallel: this means that evaluations are much faster if you have many workers.
- Printing service, that allow contestants to print PDF and text files (with quotas) without the need to configure a print server.
- Admins can import task in the Polygon format.
- Admins can attach comments to the contestants' solutions (useful in a training setting).
- The new IOI score modality (full feedback without tokens) is now implemented, and admins can choose between the previous and the current.
- C++11 is used by default.
Behind the scenes.
- Several security bugs around an unsafe use of isolate (our sandbox) were fixed. These won't be backported to 1.1, so make sure you update.
- Isolate lives in a git submodule - make sure you update both CMS and isolate.
- New base library for many of our core services.
Incompatible updates.
- Both the database schema and the format of ContestExporter have changed. To update a dump, use
cmscontrib/DumpUpdater.py \<name of dump\>
. To update the schema, first dump the content withcmscontrib/ContestExporter.py
and then drop and reinit the database withcmsDropDB
andcmsInitDB
.
v1.1.0: Version 1.1.0
CMS 1.1 is the product of 15 months of work, during which CMS ran an International Olympiad, two major regional contests and many other national and local competitions.
In addition to the brief summary below, you can find a more in-depth discussion on the new release in a paper by CMS core developers:
Stefano Maggiolo, Giovanni Mascellani, Luca Wehrstedt. CMS: a Growing Grading System. Olympiad in Informatics, vol. 8 (2014), pp. 123-132 (http://www.mii.lt/olympiads_in_informatics/files/volume8.pdf).
What's new
New features.
- Task versioning: useful for changing wrong task data behind the scenes and easily test it during the contest, minimizing disturbance to the contestants.
- Split the communication of the scoring to RWS from the scoring itself, creating ProxyService to handle the former.
- Notable performance improvements in ScoringService.
- Refactor the importers code to make it easier to write new importer.
- Support for contests in Java (through gcj), Python and PHP.
Behind the scenes.
- New sandbox, isolate, from Bernard Blackham and Martin Mareš.
- New event loop library, based on modern Python technology, and new RPC system based upon that.
- Improve testing and testing infrastructure (http://cms.di.unipi.it/jenkins).
Translations.
- Apart from English, the contestant interface of CMS is available in other 8 languages: Bosnian, Dutch, French, Italian, Japanese,
Lithuanian, Russian and Traditional Chinese.
Incompatible updates.
- Both the database schema and the format of ContestExporter have changed. To update a dump, use cmscontrib/DumpUpdater.py . To update the schema, first dump the content with cmscontrib/ContestExporter.py and then drop and reinit the database with cmsDropDB and cmsInitDB.
v1.0.1
Bug-fix release.
Bug-fix
This CMS release updates the RPC protocol used between CMS services, fixing a bug in message termination that could lead to loosing messages of a specific length. In practice this specific length was greater than any message actually used in CMS, so the bug was never actually observed. Yet, this update eliminates the source of risk.
Moreover, this release also fixes a couple of little bugs in task types OutputOnly and Communication.
v0.9.1
Bug-fix release.
Bug-fix
This CMS release updates the RPC protocol used between CMS services, fixing a bug in message termination that could lead to loosing messages of a specific length. In practice this specific length was greater than any message actually used in CMS, so the bug was never actually observed. Yet, this update eliminates the source of risk.