forked from blackav/ejudge
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
5769 lines (5059 loc) · 239 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
-*- mode: text; mode: auto-fill -*-
$Id$
Version 2.3.8 (r4898) (20080413)
================================
See the changes in NEWS.RUS.
Sorry, no English translation yet.
Version 2.3.7 (r4802) (20080310)
================================
See the changes in NEWS.RUS.
Sorry, no English translation yet.
Version 2.3.6 (r4700) (20080218)
================================
See the changes in NEWS.RUS.
Sorry, no English translation yet.
Version 2.3.5 (r4652) (20080107)
================================
The test contest configuration file generation bug is fixed.
Version 2.3.4 (r4646) (20071226)
================================
Sorry, no English version yet.
Version 2.3.3 (r4320) (20070825)
================================
Sorry, no English version yet.
Version 2.3.2 (r3929) (20070206)
================================
Many-many changes and improvements.
Information necessary for migration from version 2.2.* of the
ejudge system to the current version is in the `UPGRADE' file.
The current versions of 3rd-party programs and libraries are
supported:
expat-2.0
jdk-1.6
httpd-2.2
configure
---------
CGI-programs are installed to the ${prefix}/libexec/ejudge/cgi-bin
directory by default instead of ${prefix}/cgi-bin. Thus you
might need to update symbolic links in the `cgi-bin' directory
of the HTTP server.
New option `--enable-new-server-socket' is supported. This
option allows specifying the default path to the `new-server'
control socket.
New options `--enable-ajax' is supported. This option enables
AJAX in the `new-server' program. The client part uses the Dojo
toolkit, which must be installed to the HTTP server (see
`UPGRADE'). Note, however, that AJAX development is in progress
and most features are not implemented yet.
New option `--with-mysql' is supported, which enables MySQL for
data storage. Note, however, that this feature currently is not
implemented.
New option `--enable-style-prefix' is supported, which enables
specifying the URL prefix for accessing ejudge HTML style files,
which are used in the HTML pages, generated by the `new-server'
program. The default value of this option is `/ejudge/',
i.e. the URL for accessing the style files looks like
HOST/ejudge/file. Thus the style files must be located in the
`ejudge' directory of the HTML Document root directory of the
HTTP-server. If the HTML style files should be located in some
user's home directory, the option's value may be set to to
/~USER/.
Many command line options of the `configure' script have default
values, which are as follows:
--enable-socket-path /tmp/userlist-socket
--enable-super-serve-socket /tmp/super-serve-socket
--enable-new-server-socket /tmp/new-server-socket
--enable-contests-home-dir /home/judges
--enable-conf-dir /home/judges/data
--enable-cgi-conf-dir ../cgi-data
Thus, if the desired value of the command line option is the
same, as the default value, the option may be omitted.
On the x86_64-*linux* systems the libraries directory is
automatically set to ${exec_prefix}/lib64.
The Sun JDK 1.6.* is supported.
The `uudecode' program is no longer required for the ejudge
installation. A simplified version of the GNU uudecode program
is included in the ejudge source code.
contest.xml
-----------
New elements are added: <login_template>, <copyright_file>,
<priv_header_file>, <priv_footer_file>, <allowed_regions>,
<login_template_options>. These new elements are documented in
the Wiki-section of the http://www.ejudge.ru site.
New attributes are added to the <contest> element:
"new_managed", "assign_logins", "force_registration",
"disable_name", "enable_forgot_password", "exam_mode",
"disable_locale_change". The attributes are documented in the
Wiki-section of the http://www.ejudge.ru site.
ejudge.xml
----------
New elements are added: <plugin_dir>, <new_server_socket>,
<new_server_log>, <compile_servers>, <plugins>, <plugin>.
The following attributes are supported for the <plugin> element:
"name", "type", "load", "default".
serve.cfg
---------
New global configuration variables are added:
`disable_user_standings', `problem_navigation',
`appeal_deadline', `statement_dir', `description_file',
`disable_banner_page'.
`is_virtual' global configuration variable is added for the
replacement of `virtual' global configuration variable
(`virtual' is a keyword in C++, so it's better to avoid using it
as variable name in the source code). For backward
compatibility, `virtual' is declared as alias to `is_virtual'
global configuration variable.
New problem configuration variables are added:
`manual_checking', `examinator_num', `check_presentation',
`ignore_exit_code', `disable_user_submit',
`disable_submit_after_ok', `max_vm_size', `max_stack_size',
`max_data_size', `enable_language', `require', `statement_file',
`alternatives_file', `type', `alternative', `stand_attr'.
The `output_only' problem configuration variable is now just an
alias to the `type' problem configuration variable.
The following problem types are supported:
standard
output-only
short-answer
text-answer
select-one
select-many
New tester configuration variable `memory_limit_type' is added.
The variable may have the following values:
default
dos
java
Support for memory limiting is reimplemented. Now the memory
limit is specified in the problem configuration variables
`max_vm_size', `max_stack_size' intead of tester configuration.
The tester configuration specifies how memory limiting should be
enforced (see `memory_limit_type' description above).
runs.log
--------
The submit information storage format is changed. One record now
occupies 128 bytes. Space for IPv6 addresses is allocated,
timestamps occupy 8 bytes each.
test.inf
--------
New configuration variables are supported:
exit_code
check_stderr
userlist.xml
------------
New elements are added: <region>, <birth_date>, <entry_date>,
<graduation_date>.
New attributes are added: "ssl", "role", "cnts_last_login",
"info_create", "recovery".
javac
-----
Java programs being submitted for testing are no longer required
to have the main class named `Main'. Arbitrary names for the
main class are supported.
new-server
----------
This is brand new program, which is an improved reimplementation
of the `serve' contest server. `new-server' supports many new
features missing in the `serve' program: all the contest are
managed by one process `new-serve' (so, there is no need for
`super-serve' program to start and stop contest servers on
demand), new HTML user interface is implemented. The `serve'
program is rendered obsolete and should not be used for new
contest.
To enable new server during contest settings editing by the
`serve-control' CGI program, enable "Use the new-server for this contest?"
instead of "Manage the contest server?".
New format conversion specifiers %Mr, %Ur are added for region
information from the user database.
The virtual OLYMPIAD contests are supported. The full testing of
the participant's submissions is performed immediately after the
virtual contest stops (when time expires or the participant
presses the "Stop contest" button).
The new commands are available for the contest administrator (as
compared to the old `serve' contest administration interface):
"Clear displayed runs"
"Ignore displayed runs"
"Disqualify displayed runs"
"Add new runs in CSV format"
"Download runs"
Unprivileged users may request password restoration.
The AJAX interface is partially implemented in the unprivileged
users' HTML interface. Note, however, that the AJAX interface is
currently in development and most planned features are not
implemented.
Problem statements may be displayed in the HTML user interface.
Test-like problems (where one or several answers should be
chosen out of displayed) are supported.
new-client
----------
This is new program - CGI-client for the `new-server' contest
server. The `new-client' program (and its symbolic links:
`new-master', `new-judge', etc) replaces the old `team',
`master', `judge' CGI-programs.
The unprivileged HTML user interface is reimplemented.
The privileged HTML user interface is basically the same.
Certain user interface elements are reworked, and many new
commands are added.
libchecker
----------
The type for the character strings is changed from `unsigned
char' to `char' for better compatibility with C++ and gcc-4.1.
New data types for S-expressions are added.
New function `checker_read_buf_2' is added:
char *checker_read_buf_2(
int ind, // stream number for reading
const char *name, // the parameter name
int eof_error_flag, // 1, if EOF is presentation error
char *sbuf, // the fixed buffer address
size_t ssz, // the fixed buffer size
char **pdbuf, // the extendable buffer address
size_t *pdsz); // the extendable buffer size
The function reads one word from the specified input stream. The
word is a longest possible sequence of non-whitespace
characters. The word ends with whitespace character or EOF
marker, which are not the part of the word and remain in the
input stream. Before reading the word, whitespace in the input
is skipped.
The word is read into the fixed-size buffer or into the
extendable buffer, or into both. To specify reading into the
fixed-size buffer, non-zero values of `sbuf', `ssz' parameters
should be specified. To specify reading into the extendable
buffer, non-zero values of `pdbuf' and `pdsz' parameters should
be specified.
If only the fixed-size buffer parameters are specified, the word
is read into the fixed-size buffer. If the word is too large for
the fixed-size buffer, the checker is terminated with
"Presentation error" or "Check failed" error depending on the
input stream number.
If only the extendable buffer parameters are specified, the word
is read into the extendable buffer. Memory for the word is
allocated on heap, so it should be freed with `free' when the
buffer is no longer in use.
If both the fixed-size buffer and the extendable buffer
parameters are specified, the word is read into the fixed-size
buffer unless its size is greater than the buffer size. In the
latter case the word in read into the extendable buffer.
In any case the function returns the pointer to the beginning of
the buffer with the read word. If there is no word read because
of the end of file, and the `eof_error_flag' is 0, NULL is
returned.
New function `checker_read_file_f' is added:
void checker_read_file_f(
FILE *f, // input stream
char **pbuf, // buffer to read into
size_t *psize); // the file size
The function reads the file's content into memory. The binary
files are supported. After the file's content one '\0' byte is
added, so if the file is text file, its content in memory may be
manipulated with C string functions.
All functions `checker_read_team_*' are renamed to
`checker_read_out_*'. The old names are preserved for backward
compatibility. The `checker_team_eof' function is renamed to
`checker_out_eof', the `checker_team_close' function is renamed to
`checker_out_close'.
New function `checker_out_eoln' is added:
void checker_out_eoln(int lineno);
The function skips all whitespace except `\n' in the program
output file. If the next character is '\n' or EOF is reached,
the function returns successfully. The "Presentation error" is
diagnosted otherwise.
Reading of integer values from input streams is improved.
Integer overflow is handled correctly.
New functions checker_eq_{float,double,long_double}_abs are added:
int checker_eq_TYPE_abs(TYPE v1, TYPE v2, TYPE eps);
The functions compare two numbers of the specified
floating-point type using the specified absolute error. If the
numbers are equal (with the specified absolute error), 1 is
returned. Otherwise 0 is returned.
New function `checker_read_sexpr' is added:
checker_sexpr_t checker_read_sexpr(int ind);
The function parses the S-expression from the specified stream.
New function `checker_eq_sexpr' is added:
int checker_eq_sexpr(checker_sexpr_t l_corr, checker_sexpr_t l_out);
The function compares two S-expressions. The function returns 1,
if the two S-expressions are equal, and 0 otherwise.
New functions `checker_{koi8r,cp866,cp1251,iso,mac}_to_ucs2':
int checker_CHARSET_to_ucs2(int c);
The functions convert one character in the specified cyrillic
character set into the UCS2 character set.
New functions `checker_{koi8r,cp866,cp1251,iso,mac,utf8}_to_ucs2':
unsigned short *checker_CHARSET_to_ucs2_buf(
const char *str,
unsigned short* buf,
size_t size);
The functions convert the character string `str' in the
specified charset CHARSET into the string in the UCS2 charset.
The length of the string `str' is specified explicitly in
parameter `size', i.e. it is possible to convert strings
containing NUL bytes. UCS4 codes greater 0xffff, which may
appear in UTF8 string, are not supported. The result buffer is
specified in the `buf' parameter. The result buffer `buf' should
have size atleast "sizeof(short) * size" bytes.
The function returns the pointer to the result, i.e. the value
of the `buf' parameter.
New function `checker_ucs2_tolower':
int checker_ucs2_tolower(int c);
The function lowercases character in UCS2 charset. Currently the
english and russian alphabets are only supported.
New function `checker_ucs2_tolower_buf':
unsigned short *checker_ucs2_tolower_buf(
unsigned short *buf,
size_t size);
The function lowercases the string in UCS2 charset. Currently the
english and russian alphabets are only supported. The `buf'
parameter specifies the string address, and `size' parameter
specifies its size.
New function `checker_strcmp_ucs2':
int checker_strcmp_ucs2(
const unsigned short *s1,
const unsigned short *s2);
The function compares two strings in UCS2 charset. The strings
must terminate with 0x0000 UCS2 character.
New function `checker_eq_str_rus_ucs2':
int checker_eq_str_rus_ucs2(
const char *s1,
const unsigned short *s2);
The function compares the `s1' string in one of the supported
russian byte charsets (koi8r, cp1251, cp866, iso, mac, utf8)
with the string `s2' in UCS2 charset. Because the exact charset
of the string `s1' is unknown, all possible variants are checked.
New function `checker_eq_str_rus_ucs2_nocase':
int checker_eq_str_rus_ucs2_nocase(
const char *s1,
const unsigned short *s2);
The function works like `checker_eq_str_rus_ucs2', but comparing
strings case-insensitively.
Standard checkers
-----------------
The standard checkers
cmp_{float,double,long_double}, cmp_{float,double,long_double}_seq
support the `ABSOLUTE' environment variable. If the `ABSOLUTE'
environment variable is set (to arbitrary value), the comparison
of two floating-point values is performed in absolute error mode
instead of relative error mode (see new functions checker_eq_TYPE_abs).
The standard checker `cmp_huge_int' compares arbitrarily long
numbers (without 1Mb limit).
New standard checker `cmp_sexpr' compares two S-expressions for
equality.
New standard checker `cmp_yesno' compares `Yes'/'No' answers. If
the program being tested outputs something different from Yes or
No (case-insensitive), "Presentation error" is reported. If the
program being tested outputs answer in different letter case,
also the "Presentation error" is reported.
compile
-------
The `compile' program works correctly in the daemon mode. The
program handles `SIGHUP' signal and restarts itself, so the
`SIGHUP' may be used to force re-reading of the configuration
files. The following new command line options are supported:
-i initialization mode. In this mode all the
necessary directories are created, then the
`compile' terminates. The initialization mode is
used during installation and setup of the ejudge
system.
-D start in daemon mode
-u UID specify the user UID. May be used only if the
`compile' is started by the `root' user. The
option is used during installation and setup of
the ejudge system.
-g GID specify the group GID. May be used only if the
`compile' is started by the `root' user. The
option is used during installation and setup of
the ejudge system.
-C DIR change the current directory to `DIR'.
compile-control
---------------
A new program for controlling the `compile' program from the
command line. Especially useful, when the `compile' program is
started in daemon mode.
Usage:
compile-control [stop|restart]
edit-userlist
-------------
During viewing the registered users new command `o' is
available, which may be used for copying the contest-specific
information of user from one contest to another.
ejudge-control
--------------
A new program for controlling the ejudge system as the whole
from the command line. The following command line options are
supported:
-u UID specify the user UID. May be used only if the
`ejudge-control' is invoked by the `root' user.
May be useful in system startup sctipts.
-g GID specify the group GID. May be used only if the
`ejudge-control' is invoked by the `root' user.
May be useful in system startup sctipts.
The following commands are supported:
start start all the ejudge daemons (userlist-server,
super-serve, compile, new-server, job-server).
stop terminate all the ejudge daemons
job-server
----------
The `sendmail' MTA is supported correctly.
The `SIGHUP' signal is handled correctly and causes the program restart.
New commands "stop" and "restart" are supported.
The following new command line options are supported:
-u UID specify the user UID. May be used only if the
`job-server' is started by the `root' user. The
option is used during installation and setup of
the ejudge system.
-g GID specify the group GID. May be used only if the
`job-server' is started by the `root' user. The
option is used during installation and setup of
the ejudge system.
-C DIR change the current directory to `DIR'.
super-serve
-----------
The following new commands are available during variant editing:
"Clear variants"
"Random variants"
Daemon mode is supported.
The following new command line options are supported:
-D start as daemon
-u UID specify the user UID. May be used only if the
`job-server' is started by the `root' user. The
option is used during installation and setup of
the ejudge system.
-g GID specify the group GID. May be used only if the
`job-server' is started by the `root' user. The
option is used during installation and setup of
the ejudge system.
-C DIR change the current directory to `DIR'.
job-server-control
------------------
New program to control the `job-server' program. Especially
useful when the latter runs in daemon mode. Usage:
job-server-control [stop|restart]
new-server-control
------------------
New program to control the `new-server' program. Especially
useful when the latter runs in daemon mode. Usage:
new-server-control [stop|restart]
new-server-cmd
--------------
New program to work with the new contest server `new-server'
from the command line. The `new-server-cmd' program works
similarly to the `serve-cmd' program. The following commands are
currently implemented in the `new-server-cmd' program:
login
team-login
user-login
observer-login
examiner-login
chief-examiner-login
coordinator-login
judge-login
admin-login
master-login
logout
write-xml-runs
export-xml-runs
dump-runs
dump-problems
soft-update-stand
suspend-testing
resume-testing
judge-suspended-runs
has-transient-runs
team-run-status
run-status
dump-source
team-dump-source
dump-clar
team-dump-clar
get-contest-name
get-contest-type
submit-run
team-submit-run
import-xml-runs
dump-runs
dump-master-runs
dump-report
full-import-xml-runs
The following commands are not implemented, as compared to `serve-cmd':
dump-team-report
dump-standings
dump-all-users
super-serve-control
------------------
New program to control the `super-serve' program. Especially
useful when the latter runs in daemon mode. Usage:
super-serve-control [stop|restart]
userlist-server
---------------
Plugin support for storing the user information is implemented.
Currently the inly implemented data storage plugin is XML files
plugin. The MySQL plugin is in development.
The `sendmail' MTA is supported correctly.
The following new command line options are supported:
-u UID specify the user UID. May be used only if the
`userlist-server' is started by the `root' user. The
option is used during installation and setup of
the ejudge system.
-g GID specify the group GID. May be used only if the
`userlist-server' is started by the `root' user. The
option is used during installation and setup of
the ejudge system.
-C DIR change the current directory to `DIR'.
userlist-server-control
------------------
New program to control the `userlist-server' program. Especially
useful when the latter runs in daemon mode. Usage:
userlist-server-control [stop|restart]
Version 2.3.1 (r3198) (20060705)
================================
The user database structure is changed. Now the majority of
user info fields are contest-specific. For example, the `name'
field (the user name) may be different for the same user (more
precisely, for the same login) in different contests. In the
previous versions all the user information fields are
contest-independent, so change of the `name' field for one
contest automatically changed the `name' of the user in all
other contests, even had finished long ago.
For backward compatibility with the accumulated user database
the existing information about users are considered as specific
to the special "default contest" (which has the indentifier as
0). This information is used, when no contest-specific
information is available for a particular contest. However, as
soon as an existing user (or an administrator) changes
information about the user in the contest, a copy of user
information fields is created and made contest-specific for this
contest, so only the data for the contest is changed, but the
default data is left intact.
Only `login', `e_mail' and `password' user-settable fields are
contest-independent. All other user-editable fields are
contest-specific.
The `read_only' field now means that the user information
cannot be changed for any contest, except the registration
password, which can still be changed.
A new `cnts_read_only' field is added, which means that the user
information cannot be changed by the user for the particular
contest, but the team password can still be changed.
Version 2.2.0 (20060609)
========================
No changes from 2.1.49. From this moment on the 2.2 branch only
bugs will be fixed. All new features will go to the 2.3 branch,
which became version 3.0.
Version 2.1.49 (20060609)
=========================
Add support for a new "programming language" - plain text files
(txt). This "language" allows submitting an ordinary text files
(for example, for output-only problems). The result of
"compilation" of a text file is a script, which works like
`false' command (i.e. does nothing and returns exit code 1). For
fine tuning of available languages for each problem the
`disable_language' language configuration variable may be used.
serve
-----
Additional information about contest times is output to the
XML run log files. The contest name is also output to the
external XML run log file.
Automatic generation of the XML run logs is supported for both
the internal and external run log formats. The interval of
automatic XML run log generation may be specified in the
`serve.cfg' configuration file. The new
`external_xml_update_time' global configuration variable allows
specifying the external XML run log generation interval in
seconds, and the `internal_xml_update_time' global configuration
variable allows specifying the internal XML run log generation
interval in seconds. The files have paths as follows:
<contest_home>/var/status/dir/external.xml
<contest_home>/var/status/dir/internal.xml
super-serve, serve-control
--------------------------
Editing of the global configuration variables
`external_xml_update_time' É `internal_xml_update_time' is
supported.
testlib
-------
The message text, which is written by the `quit' procedure is
directed to the standard error stream (ErrOutput). This is
useful for scoring checkers.
run
---
A bug is fixed, which caused solutions for DOS compilers not
working in the standard stream redirection mode, when the `run'
program is managed by the `super-serve' program.
serve
-----
A new kind of checkers - "scoring checkers" is supported. In
this kind of problems the score for the problem (or the score
for each test) is scored by the checker. Usually, the checker
gives its YES/NO verdict for each test, and the score is
specified in the problem settings. Now "scoring checker" may
score the test to arbitrary score ranging from 0 to maximal
score for this test.
The "scoring checker" mode is activated by the `scoring_checker'
new problem configuration variable. If this variable is set to
1, the problem/test score is evaluated by the checker.
In the KIROV/OLYMPIAD contests the "scoring checker" scores each
test individually, and the total score of a submit is equal to
the sum of scores for each test. In the MOSCOW contests the
problem score is equal to the score of the first failed test in
the test sequence (so, probably, the problem should have one
test).
A "scoring checker" should work as follows. The checker exit
code means as usually the checking result:
0 OK
4 PE
5 WA
All other exit codes are treated as "Check failed" condition.
If the verdict is OK, the test/problem is scored to the full
score (in case of MOSCOW contest, testing proceeds to the next
test).
If the verdict is PE, the test/problem is scored to 0.
If the verdict is WA, the standard output of the checker must
contain the only integer number: score for this test/problem.
If the standard output contains something else, than one integer
number and whitespace, this is treated as "Check failed"
condition. The number in the output file must be >= 0 and less
than the maximal score for the problem or test. In case of other
number the "Check failed" error is reported.
run
---
Problems with scoring checkers are supported.
super-serve, serve-control
--------------------------
Editing of the `scoring_checker' problem configuration variable
is supported.
Editing of the `disable_language' problem configuration variable
is supported.
run
---
"Score leaps" are supported for MOSCOW contests, i.e. some score
value may never be used for a problem. For example, some problem
has 10 tests, the maximum score is 2, and the solution is either
scored as 2 (all tests passed) or as 0 (otherwise), so score 1
is missing for the problem. In this case the `score_tests'
variable for this problem should be set as follows:
score_tests = "11"
This means, that the solution, which passed 10 tests should be
scored as 1, but such solution is (implicitly) scored as 2, so
the maximal score is chosen.
So the sequence of the test numbers forms nondecreasing sequence
(several consequent test numbers may be the same, in this case
the maximum score is chosen).
serve
-----
"Output-only" problems are supported, i.e. the problems where
the solution to the problem is the answer rather than the
problem source code. A new language configuration variable
`output_only' is added. This variable may be used even in
abstract problems and is properly inherited. The default value
is 0. If the variable is set to 1, the problem is considered as
an "output-only" problem. For "output-only" problems the
"compilation" and "run" stages are performed anyway, but
they operate quite differently (see below). For "output-only"
problems the "txt" (Plain text) language should be used.
compile
-------
"Output-only" problems are supported. In case of "output-only"
problem the "compilation" means copying the source file (the
answer file, actually) into the compilation result file. The
source language settings are ignored, since the compiler is not
started.
run
---
"Output-only" problems are supported. The "output-only" problem
must have the only test. The "execution" of an "output-only"
problem solution is copying of the "executable" (the answer
file, actually) to the output file. The output file is then
checked by the problem checker as usually.
super-serve, serve-control
--------------------------
Editing of the `output_only' problem configuration variable is
supported.
serve, master, judge
--------------------
When a message from judge is being composed before the contest
starts, the judge or administrator may specify, that this
message will be available to the participants only after the
contest start.
execute
-------
This is a new program for execution of the program being checked
from the command line. The `execute' program supports all kinds
of limitations (by time, by memory, by available operations),
which are supported by the ejudge.
libchecker
----------
The library is ported to the Win32 platform (using the gcc
compiler from the Cygwin). However, the library does not depend
on Cygwin libraries and the resulting .DLL and .LIB files may be
used by any Windows compiler. For the Cygwin and MinGW32
platforms the .a library is provided as well.
Version 2.1.48 (20060430)
=========================
contest.xml
-----------
A new <main_url> element is added. This element allows
specifying the main page URL for the contest. The element is
used in the initial registration e-mail letter, sent when a new
user has been registered. Example of use:
<main_url>http://acm.univ.ru/contests/acm2006</main_url>
A new "send_passwd_email" attribute is added to the <contest>
element. If this attribute is set to "yes" value, the initial
registration e-mail letter is sent to the user even if the
simplified registration is enabled.
ejudge.xml
----------
New elements <server_name>, <server_name_en>, <server_main_url>
are added. The <server_name> element allows specifying the
description of this server, where the ejudge system is
installed, for example:
<server_name>óÅÒ×ÅÒ ÔÕÒÎÉÒÏ× ÕÎÉ×ÅÒÓÉÔÅÔÁ</server_name>
The <server_name_en> element allows specifying the description
of the server in English. This element is used, when the English
language is choosen during registration. For example:
<server_name_en>The university contest server</server_name_an>
The <server_main_url> element allows specifying the main server
URL for the current ejudge installation. For example:
<server_main_url>http://acm.univ.ru/contests</server_main_url>
These elements are used when an e-mail with user's registration
data is sent to user after registration of a new user. The
elements are used in case, when no contest is specified during
registration. If the contest is specified, the contest.xml's
elements are used instead.
userlist-server
---------------
The standard templates for e-mail messages, sent upon successful
registration are changed. The new templates use the elements
<server_name>, <server_name_en>, <server_main_url> of the
ejudge.xml configuration file and the elements <name>,
<name_en>, <main_url> of the contest.xml configuration file.
The "send_passwd_email" attribute of the contest.xml file is
supported.
userlist-server, edit-userlist
------------------------------
A new field `simple_registration' is added to the user
database. This field is set to "yes", if the user was registered
using the simplified registration procedure. The value of this
field may be changed using the `edit-userlist' program by the
administrator.
super-serve, serve-control
--------------------------
Editing of the <main_url> element and the "send_passwd_email"
attribute of the contest.xml file is supported.
team, serve
-----------
The binary files are shown correctly by the "View source" command.
serve
-----
A new `content_type' configuration variable is added to the
language section of the `serve.cfg' configuration file. If this
variable is set, the specified HTTP content type will be used
when the "Download source" command of the CGI programs `master'
or `judge', or when the "View source" command of the CGI program
`team' is executed. This configuration variable is useful for
languages with binary "sources". For example, if the "Microsoft
Word" language is enabled, the content type for this language
may be set as follows:
content_type = "application/msword"
The file name is set correctly for the downloaded sources even
the language is binary.
serve, compile
--------------
The maximal number of simultaneously supported programming
languages is increased to 100.
super-serve, serve-control
--------------------------
Editing of the `binary' and `content_type' language
configuration variables of the `serve.cfg' file is supported.
A bug which prevented editing of the `acm_run_penalty' field is
fixed.
ejudge-setup
------------
Editing of the initial values of the elements <server_name>,
<server_name_en>, <server_main_url> of the `ejudge.xml'
configuration file is supported.
Version 2.1.47 (20060419)
=========================
contest.xml
-----------
A new attribute `simple_registration' is added to the <contest>
element. If this attribute is set to the "yes" value, a simple
new user registration scheme is used for this contest. When a
new user account is being created for this contest by a
`register' CGI program, the e-mail step is omitted, the new user
password is shown immediately, so the user may proceed to the
next stage of the registration immediately.
super-serve, serve-control
--------------------------
Editing of the new `simple_registration' attribute of the
`contest.xml' file is supported.
Editing of the new `always_show_problems' global configuration
variable of the `serve.cfg' configuration file is supported.
Users, which have privilege bits set in the contest
configuration file are registered and made invisible in this
contest automatically.
When user capabilities are edited, 3 predefined set of
capabilities are available: "Observer", "Judge", "Master".
serve, team
-----------
New global configuration variable `always_show_problems' is
added to the `serve.cfg' configuration file. If this variable is
set 1, the link to the problem statements is available to the
participants in the `team' CGI program before the contest starts.
New problem configuration variable `acm_run_penalty' is added to
the `serve.cfg' configuration file. This variable is active only
in ACM and MOSCOW contests and allows changing of the failed
submission penalty. The standard value of this penalty for all
ACM contests is 20 minutes, and this is the default value for
`acm_run_penalty' configuration variable. For example, it is
possible to define the `acm_run_penalty' to 0 to disable
submission penalty at all. The `acm_run_penalty' variable may be
defined in the abstract problem and will be properly inherited
in the concrete problems.
register
--------
A simplified contest registration scheme is supported, if the
`simple_registration' attribute is set for the contest.
serve
-----
Several bugs in the problem summary table generation for the
KIROV contests are fixed.
ejudge-setup
------------
The command to start `serve' in the probe mode for the contest 1
is added to the end of the generated setup script.
super-serve, serve-control
--------------------------
Editing of the `test_sets' configuration variable is supported.
New standard checker `cmp_huge_int' is supported.
Several bugs in the "Check contest settings" command are fixed.
Editing of the `always_show_problems' global configuration
variable is supported.
Editing of the `acm_run_penalty' problem configuration variable
is supported.
userlist-server
---------------
A team member cannot be removed, if the team is marked as
read-only.
libchecker
----------
New functions `checker_in_eoln', `checker_team_eoln',
`checker_corr_eoln' are added. These functions check that the
corresponding input file contains the End-Of-Line character
(possibly after spaces) at the current position. All whitespace
characters and the \n itself is removed from the stream.
New standard checker `cmp_huge_int' is added. The checker
compares a number in the output file with the number in the
correct answer file. The maximal length of numbers is 1Mb.
Whitespace characters before the number, `+' sign, and the
leading zeros are ignored.
serve-cmd
---------