DOMjudge Programming Contest Judging System

Version 3.0.2 - 13 February 2010
--------------------------------
 - Re-fix an incorrect LIBWWWDIR path.
 - Correct presentation error exit code in test_solution.sh.

Version 3.0.1 - 28 January 2010
-------------------------------
 - Many small documentation improvements.
 - Fix include paths when defining custom LIBWWWDIR, LIBJUDGEDIRs.
 - Plugin interface: correct SQL privileges for domjudge_plugin user.
 - Plugin interface: correct type of best_time to string and unset
   large variable after use.
 - Plugin interface: also generate required XML elements when no
   contest active.
 - Remove dbpasswords.secret and htpasswd-jury in distclean target.
 - Also support htpasswd2 as program name for Apache's htpasswd.
 - Bugfix: allow zero size testcases (port from ETH tree).

Version 3.0.0 - 21 October 2009
-------------------------------
 - Bugfixes and improvements to checktestdata program.
 - Fix error trapping in subshells, thanks Jan Jergus. (Closes: #2866430)
 - Fix bug in lib.database.php with array_map "class::method" notation.
 - Multiple admin manual improvements.
 - Added 'make check' dependency on submitclient.
 - Only show the configured submission methods in the team manual.
 - Fix install of gendbpasswords and use /dev/urandom.

Version 3.0.0 Release Candidate 2 - 3 September 2009
----------------------------------------------------
 - Fix directory install permissions.
 - Only show languages that are not submitable as 'disabled'
   and show a separator between contests on the problems page.
 - Minor updates to team manual.

Version 3.0.0 Release Candidate 1 - 16 June 2009
------------------------------------------------
 - Raise required PHP version to 5.
 - Replace included static bash by dash shell.
 - Revise team manual.
 - Add missing link to add testcases to a new problem.
 - Fix bug causing segfaults of submitdaemon. (Closes: #2046031)
 - Added script to check results of submitted test-sources.
 - Added 'checktestdata' script for checking testdata via grammar specification.
 - Add support for FHS directory structure installation.
 - Move all configure paths to globally included paths.mk file.
 - Repair broken documentation build/install system.
 - MySQL table types are now InnoDB. Define foreign key relations
   between tables (Closes: #2144325).
 - Use db values instead of the userinput. (Closes #2144718)
 - Add a FLUSH PRIVILEGES statement after user grants during
   installation, as this may be necessary to have MySQL pick up
   all changes correctly.
 - Don't use -fstack-protector under Cygwin. (Closes: #2144713)
 - Distribute prebuilt versions of the admin and judge manuals and
   remove svn,expdlist downloads for the team manual.
 - New compactified layout of team manual.
 - Add note about Java class naming in team manual. (Closes: #2153189)
 - Add Java compile script that autodetects class name. (Closes: #1964765)
 - Add binary file check in commandline submit. (Closes: #2046017)
 - Make HTML tables sortable in the jury view.
 - Removed "feature" of only allowing alnum chars in filename base
   for submit client problem parsing.
 - Show truncated team names instead of logins in submissions overview.
 - Fix bug of submittime==endtime not showing as too-late, thanks Tobias Werth.
 - Replace 'hostname --short' option, fixing inconsistent results.
 - Merge changes in ipv6 branch to trunk, IPv6 comparison not yet functional.
 - Show unread clafications in the title of the team clarifications page.
   (Closes: #2148054)
 - Added test sources for java class name, network and root user.
 - Only wrap unquoted lines in clarification texts. (Closes: #2244652)
 - Only build submit client/daemon on request via configure. (Closes: #2046029)
 - Flush results in config checker for better feedback.
 - Fixed DB installation support with script 'dj-setup-database'.
 - Update included dash shell to version 0.5.5.1-2 (Debian upstream).
 - Replace beep by alert plugin program. (Closes: #1878083)
 - Add functionality and fix security issue in runguard, thanks Thomas Rast.
 - Check for safe_mode before diff-ing tempfiles. (Closes: #1808354)
 - Proper error message when entering a team ip that's already in use.
 - Remove javascript sorting from table columns where it doesn't make sense.
 - Commandline submitclient supports only http by default now.
 - Remove redundant copies of testdata by symlinks. (Closes #2805385)
 - Java chroot script now uses Sun's OpenJDK-headless, allowing for a leaner
   chroot and more supported architectures.
 - Reorder source tree: removed bin dir, move test-sources to tests, cleanup.
 - Fix DEBUG_JUDGE option for debugging judging backend.
 - FreeBSD porting fixes, making DOMjudge more POSIX compliant.
 - Make DOMjudge work when PHP's short_open_tag = Off.
 - Add support for staged installs (DESTDIR).

Version 2.2.0 - 11 August 2008
------------------------------
 - Do not install domjudge straight in $HOME by default.
 - [security] Add sanity check in jury interface whether basic authentication
   is enabled, and lock down jury inferface also for non-GET/POST requests
 - Fix race condition in team password check.
 - Improved MySQL query performance.
 - Move .htaccess config to apache config.
 - Fix 'NONINTERACTIVE' undefined (Closes: #1814594, thanks Maks Verver)
 - Moved beep system call to separate function in lib.misc.{c,php}.
 - Switch to UTF-8 for output. (Closes: #1742460)
 - Represent balloon colours with a symbol rather than filling the background,
   making the scoreboard less cacophonic. (Closes: #1808561)
 - Add a web based tool for tracking balloon handouts.
 - Fix C compiler warnings by using 'const char *'.
 - Fix noninteractive/logging code in websubmit to restore submitclient
   error parsing (Closes: #1829621).
 - Fix variable name in judge/compare_program.sh.
 - Added make dist target and removed generated figures.
 - Added cookie for last verifier in jury webinterface (Closes: #1742044).
 - Added option to only show unverified submissions in jury interface.
 - Fix bug that jury was not allowed to set clarifications (un)answered.
 - Fix problem that runguard ignored SIGALRM on some distributions (thanks
   Tobias Werth).
 - New required activatetime field for a contest: defines the moment the
   team/public displays start to display this contest, but no submissions
   accepted yet. Solves the problem of testsession data still displayed upto
   the second before a contest starts (Closes: #1825555).
 - Rename contest.lastscoreupdate to freezetime to be more clear
   and in line with other table attributes.
 - Add salt to passwords' md5 hashes.
 - Move setting resource limit from run script to runguard.
 - Added signal detection to daemons for graceful shutdown (Closes: #1808478).
 - Fixed bug in test-stacksize.c due to compiler optimization
   (Closes: #1788820).
 - Add some rudimentary tests.
 - Remove websubmitdaemon, submit directly to database (Closes: #1737229).
 - Add script to restore submission table from SUBMITDIR files.
 - Complete implementation of syslog logging (now also for C/C++).
 - Send jury user back to referer page after edits (Closes: #1821543).
 - Remove .php extensions from commandline scripts.
 - Higher displayed precision in float compare.
 - Fix submit_copy to use bash.
 - Make it easier to return custom result codes for a judging.
 - Added support for "presentation error" results.
 - Enable GCC security features for compiling DOMjudge helper programs.
 - Automatically generate apache.conf from global.conf (Closes: #1778059).
 - Added work-in-progress code for eventdaemon (Working on: #1682761).
 - Added printer friendly version of jury scoreboard.
 - Restyle configchecker and also check MySQL version and max_connections.
 - Explicitly use DBSERVER host with mysql install (Closes: #1955439).
 - Display time left to end of contest on every page (Closes: #1960940).
 - Move php files that shouldn't be served to lib/www (Closes: #1957891).
 - The admin can exclude submissions from a team's score (Closes: #1742043).
 - Added choice of view types to submissions page, default to 50 most recent
   submissions (Closes: #1964747). Choice is remembered in a cookie.
 - More flexible debugging settings with a bitmask (Closes: #1759103).
 - Store testdata in database and add interface to view/update it.
 - Add an anchor to the first changed line in the diff (Closes: #1818874).
 - Added 'domjudge_plugin' mysql user for the plugin webinterface.
 - Cache hostname in team table to prevent slowdown on hosts without
   working reverse.
 - Removed LGPL licence by relicencing 2 files to GPL.
 - Added ability to download source code for jury.
 - Allow bash-static to be replaced by any static POSIX shell.
 - In MySQL privileges table, add 'localhost' entries next to '%' entries
   to prevent Access Denied when DB is on localhost.

Version 2.1.1 - SVN
-------------------
 - Implement syslog logging (for PHP and shell scripts).
 - Fix typo in jury/submission.php causing a parse error when using
   PHP4 (Closes: #1808259, thanks mhil@fmf.nl).
 - Fix team unread clarification count to work cross-contest.
 - Update not the public, but the jury scoreboard after freeze.
 - Fix poblem colour input field to match its size in the database.
 - The colors of the problems are now shown in the jury problems overview
   (Closes: #1808308).
 - Improve contrast of default team category colours.
 - Some improvements to admin manual including submission diagram.

Version 2.1.0 - 5 September 2007
--------------------------------
 - Drop tempfile and mkstemps binaries, they are not necessary.
 - Change runguard license to GPL 2 or higher. The current code
   is a different implementation of the original idea from timeout.
 - Make shell scripts /bin/sh where possible, set them to bash
   where we rely on bash-specific features.
 - Fixes to judge/compare.c for better handling of strange newlines and
   printing first difference summary as first line.
 - Allow admins to rejudge PENDING/CORRECT submissions (Closes: #1766222).
 - Fix include test for Text_Highlighter to cope with missing PEAR.php.
 - Fix password generation for more than one team.
 - Fix test-logic bug in judge/check_program.sh: reversing judging outcomes.
 - Make warning and error beeps default to something more noticeable.
 - Let show_source cope with empty file submissions gracefully.
 - Abort startup of judgedaemon if processes of RUNUSER still found running.
 - Added extra default problem 'fltcmp' for testing check_float and special
   run script code.
 - Fix make_passwords.sh to cope with htpasswd2 instead of htpasswd. Thanks
   Tobias Werth for the patch.
 - Fix 2 generate_config.sh bugs: quoting error and tempfile cleanup.
 - Print float abs/rel diffs in check_float (Closes: #1777195).
 - Allow teams to respond to received clarifications (Closes: #1777179).
 - Check LANG_EXTS array for consistency with languages table in configtest
   (Closes: #1777182).

Version 2.0.0 - SVN
-------------------
 - Use correct last modified date of team manual (Closes: #1744121).
 - Allow to set a specific new password for a team (Closes: #1737142).
 - Split general functions from submitcommon.cc to lib.misc.c and
   improved makefile structure and build process under Cygwin.
 - Replaced compare script by C program with better diff display.
 - Use AJAX instead of iframe to notify team/jury of new clarifications.
 - Added some security improvements to runguard.
 - Drop dependency on tempfile during distclean.
 - Fix compile errors/warnings in beep.c and compare.c (Closes: #1754218).

Version 2.0.0 Release Candidate 2 - 25 June 2007
------------------------------------------------
 - A shared file system between judgehosts and jury system is no
   longer required. The source is now communicated via the database.
 - Merge judging information into submission page (Closes: #1741620).
 - Improved portability to non-Linux systems (Closes: #1734046).
 - Use syntax highlighting in source code viewer when PEAR
   Text_Highlighter class is available.
 - Generated passwords only lowercase and length 6 (Closes: #1737142).
 - Split test-sources in normal and stress tests (Closes: #1737421).
 - Remove 'NOW()' from SQL update/insert queries to make replication
   time-independent.
 - Fixed bug in submit_db: report errors before too-late submission.
 - Fix bug in diff display when no newline present (Closes: #1741625).
 - Select recipient explicitly on clarification send (Closes: #1741622).
 - Use either wget or curl for downloading LaTeX packages.
 - Add more checking and verification to database input.
 - Upgrade bash to upstream Debian version 3.1dfsg and removed sources
   from package to website to reduce package size.
 - Bring lib.database.php up to date with latest upstream version.
 - Improved error handling in team file uploads.
 - Small-time cleanups.

Version 2.0.0 Release Candidate 1 - 28 May 2007
-----------------------------------------------
 - Minimum MySQL version required is now 4.1: simplify SQL privilege
   removal.
 - [INCOMPATIBLE CHANGE] Renamed judger to judgehost everywhere to
   remove ambiguity between human judges and judge computers.
 - [INCOMPATIBLE CHANGE] Renamed team to teamid in database tables
   refencing the 'team' table index 'login'.
 - Add numbering to scoreboard.
 - Make all cells in jury scoreboard links that refer to relevant
   data for that cell (Closes: #1582358).
 - Add affiliation icons to scoreboard (configurable). (Closes: #1355814).
 - Adapt and split sql script files to allow for easier upgrading and
   changing database name.
 - Fix possible buffer overflow in submitcommon.cc; thanks to
   Lennert Buytenhek for pointing out [CVE-2007-2977].
 - Add option to commandline submit to use websubmit (Closes: #1582376)
   and use libcurl for that (Closes: #1626222).
 - Add unfreezetime field to contests which allows to display the final
   standings to teams and public, and a button to unfreeze right away
   (Closes: #1582370).
 - Add problem and team category colours to MySQL DB.
 - Add team summary to all main team pages.
 - Add check_float program to compare floating point output.
 - Parse validator XML output if xsltproc is available (Closes: #1238454).
 - Add more summary data to tables.
 - Fix clarification wrapping.
 - Fix some language typos.
 - Improve webinterface layout.
 - Add MySQL transactions; will provide extra safety when the table type
   supports it (otherwise does nothing).
 - Rewrote submit daemon/client to use new networking code, which makes
   transition to IPv6 compatibility easy. (Closes: #1576565).
 - Change scoreboard sorting to use ACM ICPC (tie-breaker) rules.
 - Added team information pages for teams and public and included team
   members field in the SQL 'team' table.
 - Unify documentation into an administrator's manual, a judgers manual
   and a team manual.
 - Balloon notifications can continue after scoreboard freeze, and will
   list all balloons a team is supposed to have.
 - Add event table to DB to store major events of the contest
   (Working on: #1682761).
 - Only judge submissions that are submitted strictly before the contest
   end time.
 - Fix check_float testing for NaN and INF (thanks to Maks Verver).
 - Fix variable type to work on 64 bit systems in submit.cc (thanks to
   Maks Verver).
 - New script: static_scoreboard.php. Outputs a scoreboard suitable
   as a static HTML page.
 - Add DOMJUDGE_ADMINS variable in etc/passwords.php. This can be used
   to differentiate between judges and admins for the web interface:
   admins will be allowed to change more of the core data.
 - Bring lib.database.php up to date with latest upstream version.
 - Add Referential Integrity and HTTP Authentication check to configchecker.
 - Add option to admin interface to edit and delete most data types.
 - Improved build process of submit client under Windows/Cygwin.

Version 1.3.0 - 6 October 2006
------------------------------
 - Fix balloons notification for new database layout introduced
   in 1.1.0; thanks Lennert Buytenhek for the patch.
 - Handle unwritable logfiles more gracefully.
 - When scoreboard frozen, display since when.
 - Some very minor tweaks to code and documentation.

Version 1.3.0 Release Candidate 2 - 18 September 2006
-----------------------------------------------------
 - Large update and improvement of the documentation: more
   installation information, a quick-install checklist, FAQ
   is improved, example Apache configuration shipped and bugs
   fixed (Closes: #1560107).
 - Default hostname in MySQL privileges to '%' (all hosts), making
   sure that webinterface, command line and remote judgers can all
   connect (Closes: #1560108).
 - Change default memory limit in global.cfg to 512MB, since the Sun
   JVM consumes 200 MB by itself.
 - chmod uploaded files so the websubmitdaemon can handle them
   even if the webserver has a restrictive umask.
 - Auto-focus the clarification textarea.
 - Bring lib.database.php up to date with latest upstream version.
 - Some miscellaneous minor tweaks.

Version 1.3.0 Release Candidate 1 - 15 September 2006
-----------------------------------------------------
 - Added a separate script for extra setup of the chroot environment
   and pass memory limit to Sun Java run script for better javac/java
   support (Closes: #1508663).
 - Added script to generate Java chroot environment from Debian sources.
 - Added toggle buttons in jury interface for allowing submission
   and judging per problem and language.
 - Added option to enter verifier's name in jury interface.
 - Changed config option SUBM_VERIFY to VERIFICATION_REQUIRED and
   disabled "off" choice.
 - Fixed some more HTML to be fully XHTML 1.0 Strict compliant.
 - Included sources to comply with licences of included programs.
 - Multiple other small fixes and enhancements.

Version 1.2.0 - 26 June 2006
----------------------------
 - Added websubmit (Closes: #1103084).
 - Added support for team passwords (generating and validating).
 - Added team status light to jury teams overview (Closes: #1441783).
 - Added confirm dialog when sending a clarification (reply).
 - Added examples and documentation for how to use interpreted languages.
 - Added support for specialised run and compare scripts.
 - Timeout submitclient connection to server (Closes: #1477739).
 - Minimum required PHP version now 4.3.2.
 - Allow for IPv6 IP-addresses to be used.
 - Correct parameters to `diff`, since '-2' is obsoleted.
 - Checked all BASH scripts for 'set -e' (Closes: #1508492).
 - Tweak HTML to be fully XHTML 1.0 Strict compliant.

Version 1.1.0 - 22 December 2005
--------------------------------
 - Added 'make check' target which submits test-sources.
 - Fixed that no compiler output gives compilation error.
 - When solutions timeout, first try to kill graciously (Closes: #1312848).
 - Removed LaTeX packages from the sources to remove GPL/LPPL conflicts.
 - Changed runguard license to IBM Public License.
 - Added diff to previous submission in source display (Closes: #1310244).
 - Extra check on submission filenames to prevent theoretical exploits
   (Closes: #1355816).
 - Added summary of solved problems to team submissions page
   (Closes: #1312241).
 - Automatically quote clarification request when replying
   (Closes: #1347688).
 - [INCOMPATIBLE CHANGE] Renamed table category to team_category,
   team_category.catid to categoryid and team.catid to categoryid,
   scoreboard_{jury,public}.problem to probid.
 - Added team_affiliation table which allows for storing the university,
   institution or company teams belong to.
 - Added room and comments fields to team table.
 - Display sort-order in category overview.
 - A lot of small webinterface enhancements.

Version 1.0.0 - 4 October 2005
------------------------------
 - Updates to team manual and other documentation (Closes: #1306335).
 - Fix case-bug in sql/mysql_privileges.sql example.
 - Drop checking for existence of testdata in www/jury/checkconfig.php,
   since the webserver doesn't need to be able to read that data.
 - Minor enhancements to the jury webinterface display.
 - Added config option to disable chroot environment for judging.
 - Improved sample data.
 - Add sort-order field to category table to enable some categories
   to be sorted at the bottom automatically (Closes: #1311885).
 - Some other small bugfixes.

Version 1.0.0 Release Candidate 1 - 21 September 2005
-----------------------------------------------------
 - Added config option to autoconfigure team IP addresses.
 - Added config option to (not) show compiler output to teams.
 - Moved C-code from headers to separate files.
 - Fixed bugs where submitdaemon couldn't handle spaces in language ext.
 - Added balloons notification script (Closes: #1238416).
 - Added feature: jury can do optional or required auditing of judgings
   (Closes: #1070240).
 - Accept late submissions, but do not judge them (Closes: #1238421).
 - Improve efficiency of requesting contest data.
 - Support the ICPC Validator Interface standard, concerning the
   parameters of the compare script. The result.xml file is generated
   but is not yet considered by test_solution (See: #1238454).
 - Small improvements in Makefile's and install scripts.
 - Some other small bugfixes.

Version 0.3.1 - 16 July 2005
----------------------------
 - Added documentation on MySQL DB layout to INSTALL.
 - Improved SQL installation/cleaning scripts.
 - Added make target to automatically generate passwords.
 - Fixed bug where teams received popups for their own clarifications.
   (Closes: #1233038)
 - Fixed missing privilege definition in MySQL table.
 - Miscellaneous other small fixes.

Version 0.3.0 - 5 July 2005
---------------------------
 - Added mass rejudging support per team,language,problem,judger.
   (Closes: #1070241)
 - Added FAQ in docs/FAQ.
 - Fix missing column_priv (domjudge_user,problem,cid).
 - Fix sorting for equal scores to be alphabetical on team name.
 - Miscellaneous documentation improvements.
 - Fix some problems with file permissions by setting those explicitly.
 - Config checker now checks for existence of testdata.{in,out}.
   (Closes: #1221427)
 - Web interface copes better with empty database tables.
 - Fixed that time_factor was inadvertently cast to int for output.
 - Add tooltips explaining the scoreboard summary row.
 - Made some enhancements to the Makefiles.
 - Support MySQL 3/4 privilege tables and sql files installation.

Version 0.2.0 - 23 February 2005
--------------------------------
 - Fixed faulty EPS-logo, finally.
 - Add database privileges and move sql-files to own directory.
   (Closes #1070236)
 - Improve config.tex dependency.
 - Make the base URI of the web interface configurable and fix redirects
   to be compatible with the HTTP-specification.
 - Fix bug in getSubmissions() that caused a syntax error on the
   team-overview in the jury interface.
 - Added some notes on security to the INSTALL docs.
 - Symbolic links now included (subversion >= 1.1).
 - Fixed buffer size bug in log/error C-code.
 - Fix bug in submit_db where the problem name got case-normalised.
 - Feature: Add caching to the Scoreboard. This vastly improves the
   responsiveness and scalability of DOMjudge; outputting the scoreboard
   is now an O(1) operation in queries. (Closes: #1070079)
 - Some fixes to XHTML1.0 compliance.
 - In tables, the time is now printed as hh:mm (without seconds).
 - Complete rewrite of the clarification interface of both teams and jury.
   Functional changes: added possibility to (un)set a request as "answered".
 - Remove Dutch text from lib.database.php. (Closes: #1103043)
 - Add functions for debugging and profiling (timing) the web interface.
 - Include placeholder config files which output an error when the
   system is unconfigured.
 - Fix layout error of differences output.
 - Only define STDERR when not already defined (differs per PHP version).

Version 0.1.1 - 24 November 2004
--------------------------------
 - Improve documentation layout.
 - Improve Makefiles and add global targets.
 - Move passwords to separate passwords.php file.
 - Redirect in webroot changed from permanent to temporary.
 - Recreated EPS logo, now 75% smaller filesize.

Version 0.1.0 - 18 November 2004
--------------------------------
 - First public release.
