Update the changelog
[opencv] / apps / Hawk / CVEiCL / EiC / Change.html
1 <hmtl> <head> <title> EiC's Change log </title>\r
2 </HEAD>\r
3 <body bgcolor="white"> <font size=2>\r
4 <!--Navigation Panel-->\r
5 \r
6 <h1>EiC's Change Log.</h1> <br>\r
7 <pre>\r
8                        Significance of Changes\r
9 \r
10                        *  minor change or bug fix \r
11                      ***  a new feature or function\r
12                   ******  major change or addition\r
13 \r
14 </pre>\r
15 <multicol cols=2>\r
16 \r
17 \r
18 <b> Changes from 4.3.0 to 4.3.1 (next_release) </b>\r
19 <pre>\r
20 \r
21        * fixed bug as reported by Steve Marthouse from vrml3d.com, \r
22          that EiC's float conversion mechanism fails to execute \r
23          correctly:\r
24 \r
25                 float f = 0.7F;\r
26                 assert(f == 0.7F);\r
27 \r
28        * fixed bug as reported by  Victor Eruhimov, that during\r
29          error recovery EiC would on occassions aborting due to \r
30          some bad memory addressing\r
31 \r
32 </pre>\r
33 \r
34 \r
35 <b> Changes from 4.2.8 to 4.3.0 </b>\r
36 <pre>\r
37 \r
38   ***** With the help of Al Amzeen, EiC compiles using DJGPP \r
39         under win32. This provides fairly complete EiC \r
40         installation, under win32.\r
41 \r
42     *** Added `void EiC_setMessageDisplay(void (*)(char*))' \r
43         function. The purpose of this function is to allow \r
44         an embedding system to control how EiC's error and \r
45         warning messages are displayed. This is done by passing\r
46         EiC_setMessageDisplay the function it wants used for \r
47         displaying EiC's error and warning messages. The \r
48         replacement function returns void and must accept a C \r
49         style string. The strings passed are stack based and \r
50         therefore, should either be displayed straight away or \r
51         copied into a buffer space.\r
52 \r
53     *** added the `getcwd' function to unistd.h. \r
54         Compliance: POSIX.1\r
55 \r
56     *** added SVR4 and 4.3+BSD macro extensions to termios.h\r
57 \r
58     *** the win32 port of EiC now stores its include files in\r
59         EiC\include. The environment variable HOMEofEiC\r
60         doesn't need to be set if EiC is installed in \r
61         C:\EiC.\r
62 \r
63     *** Matt Minnis has added a `:quit' command to EiC and\r
64         is simply an alias to `:exit'.\r
65 \r
66     *** More externally visible identifiers prefixed with\r
67         `EiC_'.\r
68 \r
69       * fixed problem with EiC not detecting HOMEofEiC\r
70         environment variable under DJGPP and probably also \r
71         under win32\r
72 \r
73       * brought EiC/main/examples/embedEiC.c up todate:\r
74         changed the call to init_EiC to EiC_init_EiC and\r
75         the include path under win32. \r
76 \r
77       * fixed compile problems with the FreeBSD port of EiC.\r
78 \r
79       * fixed one cause of segmentation violation due to certain\r
80         types of errors during declaration parsing.\r
81 \r
82       * fixed bug with EiC's scanf function as reported by\r
83         Sean McTigue:\r
84              while(scanf("%d", &num)==1)\r
85                 printf("d\n", num);\r
86 \r
87         getting caught in a infinite loop when illegal input is\r
88         entered.\r
89 \r
90       * fixed problem with :gen command  outputting the\r
91         function call to add_builtinfunc rather than to\r
92         EiC_add_builtinfunc.\r
93 \r
94 \r
95 </pre>\r
96 <b> Changes from 4.2.7 to 4.2.8  (Jun 12 2000) </b>\r
97 <pre>\r
98 \r
99     *** The win32 makefile systems has had some modifications \r
100                (still needs more).\r
101         The EiC\config\genstdio.c is now incorporated into the make system\r
102         and is used to generate standard header files. And EiC\main\main.c\r
103         is used rather than EiC\src\main.c, bringing inline more closely\r
104         with the Unix version.\r
105         \r
106     *** The `:clear' command now takes multiple file names delimited\r
107         by commas as its arguments:\r
108 \r
109              :clear file[,<file>]*\r
110           \r
111     *** More name space tweaking. Most, if not all, externally visible variables \r
112         and functions, are now prefixed by EiC_. This is to reduce \r
113         the possibility of name conflicts between EiC source code\r
114         and any embedding system. \r
115 \r
116     *** EiC now supports ISO-C signal.h and the signals (SIGXXXX) defined \r
117         for POSIX.1 signal.h. See EiC's library documentation \r
118         for details.\r
119 \r
120     *** EiC's interface to the standard C library functions fgets() \r
121         and gets() have been made safe against buffer overflows \r
122         when used with safe pointers.\r
123 \r
124     *** Added to unistd.h the functions pause and alarm\r
125         compliance: SVr4, SVID, POSIX, X/OPEN, BSD 4.3\r
126 \r
127     *** Added the standard ISO-C header iso646.h\r
128     \r
129       * removed limits.h and signal.h as they are now completely\r
130         generated via EiC/config/genstdio\r
131 \r
132       * fixed EiC failure to apply the address operator to functions:\r
133 \r
134          EiC 1> int foo(int x) { return x;}\r
135          EiC 2> foo == &foo;  \r
136                  1\r
137       \r
138       * fixed typo in EiC's online :help info for the :gen command \r
139 \r
140       * fixed access violation problem, as reported by Eroukhimov, \r
141         Victor, caused sometimes by an error occuring with the operational\r
142         type with in a selection statement.\r
143 \r
144       * included missing file EiC/test/EiCtests/teststatic3.aux\r
145         within EiC's CVS repository.\r
146 </pre>\r
147 \r
148 \r
149 <b> Changes from 4.2.6 to 4.2.7  (May 16 2000) </b>\r
150 <pre>\r
151 \r
152     *** A reset operator has been added. It is used to set EiC \r
153         to a default internal state. All memory is freed, the \r
154         contents of include files and global variables, allocated, \r
155         included and declared, after the reset point, are removed. Any\r
156         global scalar variables declared prior to the reset point will have \r
157         their previous values restored. The default reset point is equivalent\r
158         to starting EiC with the -N command line switch:\r
159 \r
160              EiC > :reset  // regain a previous state\r
161 \r
162         It is also possible for the user to define the `reset point'\r
163         by using the `:reset here' command:\r
164 \r
165            EiC 1> int p = 66;\r
166            EiC 2> :reset here // set reset state\r
167            EiC 3> p = 88;\r
168                   88\r
169            EiC 4> :reset\r
170            EiC 5> p;\r
171                   66\r
172 \r
173         see EiC's documentation for further details and gotchas.\r
174 \r
175 \r
176       * documentation updated to reflect the `:reset' command.\r
177 \r
178       * termio and termios.h files have been updated on the Linux\r
179         platform to conform with libc6.\r
180 \r
181       * fixed problem as reported Eroukhimov, Victor that \r
182         EiC's source file src/assertp.h fails to define \r
183         assertp when NDEBUG is defined. \r
184 \r
185       * Applied Ken Settle's patch that corrected EiC's \r
186         failure to diagnose:\r
187 \r
188             EiC 1> 0 (15); //Function names cannot be constants\r
189 \r
190       * Applied Kaz Kylheku's patch to rid EiC's source code\r
191         of many externally visible variables, by converting all \r
192         object and function declarations, where possible, to static.\r
193         This is important as it reduces the possibility of name\r
194         conflicts between EiC source code and any embedding\r
195         system. It also removed several dead function and variable \r
196         definitions.\r
197 \r
198       * Further refinement to prevent name clashes between\r
199         private and public object and function definitions\r
200         between EiC functions. \r
201 \r
202 </pre>\r
203 <b> Changes from 4.2.1 to 4.2.6  (Mar 25 2000) </b>\r
204 \r
205 <pre>\r
206 \r
207    ***  The module termios.h has been interfaced to EiC.\r
208         This allows for serial port programming under Unix.     \r
209 \r
210    ***  The :gen command has now an extra option, `num', which\r
211         controls the number of multiplex callbacks generated:\r
212 \r
213           :gen <include_file> [num] ["<output_file>"]\r
214 \r
215         both num and output_file are optional. the \r
216         default value for num is 1.\r
217 \r
218       * Fixed problem reported by Sreeni R. Nair\r
219         with a typedef clash  between SunOS header file\r
220         and eicval.h\r
221 \r
222       * Fixed the following bugs as reported by \r
223         Victor Eroukhimov:\r
224 \r
225         1, EiC fails to diagnose:\r
226             EiC > char a[5][];\r
227         2, That char a[3][] = {"abc", "def"}; causes\r
228            EiC to abort.\r
229         3, That EiC was not initialising char pointers correctly\r
230            during declaration:\r
231               EiC > char a[] = "adsf"; char *b = a;\r
232               EiC > b == a;\r
233 \r
234       * documentation update and corrections.\r
235 \r
236       * Fixed bug associated with EiC's :show command\r
237         causing illegal storage access when display\r
238         struct, union or enum tag specifiers.\r
239 \r
240       * Fixed the following bugs as reported by \r
241         Kaz Kylheku:\r
242 \r
243         1, that EiC at times fails to parse character \r
244            literals correctly:\r
245              EiC > int x;\r
246              EiC > assert(x == '\'');\r
247         2, that EiC failed to assign pointers to builtin \r
248            code correctly:\r
249              EiC > int (*p)(const char *fmt, ...) = printf;\r
250            where printf is a builtin function.  \r
251        3, that ULONG_MAX definition on the win32 was \r
252           incorrect\r
253        4, that static variables declared in a file not \r
254           always being hidden from clashes with other objects\r
255           declared with the same name but within other\r
256           files. \r
257        5, function runEIC in starteic.c has a little transgression related\r
258           to the use of the setjmp macro:\r
259               if ((E = setjmp(env)) == 0) {\r
260                   /*...*/\r
261               } else if (E == _Err_) {\r
262                 }\r
263 \r
264        * Applied David Ell's patch that removed \r
265          hard coded directory \r
266          reference in the EiC/src/Makefile. \r
267 \r
268 </pre>\r
269 \r
270 <b> Changes from 4.2.0 to 4.2.1  (Jan 14 2000) </b>\r
271 \r
272 <pre>\r
273  ******  EiC now supports setjmp.h\r
274 \r
275  ******  EiC now supports gotos and labels as specified by ANSI-C.\r
276 \r
277  ****** EiC's parser can now handle LL(N) grammar, Previously it was\r
278          only able to parse an LL(1) type grammar. This change in\r
279          principle enables more easily language enhancements and\r
280          extentions. N is specified via the definition of MAX_TOKENS\r
281          in EiC/src/lexer.h and is currently set to 3.\r
282 \r
283 \r
284     ***  added the function `putenv' to stdlib.h\r
285          Compliance: SVID 3, POSIX, BSD 4.3\r
286 \r
287     ***  added the function `strdup' to string.h\r
288          Compliance: SVID 3,  BSD 4.3.      \r
289 \r
290     ***  Documentation updated to reflect the addition of setjmp.h, \r
291          gotos, putenv and strdup.\r
292 \r
293       * for the win32 port, added missing file sys/time.h\r
294 \r
295       * fixed bug as reported by Victor that EiC doesn't handle error\r
296         recovery correctly with respect to the removal of \r
297         prototypes to builtin functions.       \r
298 \r
299       * Incorporated Ken Settle's patch enabling EiC to handle correctly:\r
300             \r
301             EiC 1> #define FOO int\r
302             EiC 2> FOO (*a)(FOO x);\r
303 \r
304 \r
305       * Fixed bug with EiC_parseString, as reported by Kester McKinney,\r
306         failing to allocate on occassions sufficient buffer space for \r
307         passing the format string.\r
308 \r
309       *  Fixed bug with EiC failing to diagnose correctly: \r
310          passing indirectly an unsafe pointer to a function\r
311          expecting indirectly a safe pointer or vice versa:\r
312 \r
313               EiC 1> char * * p;\r
314               EiC 2> char * *unsafe q;\r
315               EiC 3> void f1(char * * p) {1;}\r
316               EiC 4> void f2(char * *unsafe q) {1;}\r
317               EiC 5> f1(p);   // okay\r
318               EiC 6> f1(q);   // error\r
319               EiC 7> f2(p);   // error\r
320               EiC 8> f2(q);   // okay\r
321 \r
322          For more information see EiC's documentation covering\r
323          pointers: www.pobox.com/~eic/EiC\r
324 \r
325       *  Fixed bug with EiC's address, `@', operator failing to \r
326          handle more  compilcated data types properly:\r
327 \r
328              char *vec[] = {"hello", "world"};\r
329              char *p[2]  @ &vec;\r
330 \r
331       *  Fixed problem related to David Binette's report of a \r
332          security concern with respect to EiC's demo cgi program \r
333          `uploadfile.eic.cgi'\r
334 \r
335       *  Fixed bug with the definition of CLOCKS_PER_SEC on the \r
336          Linux platform as reported by Derek Simkowiak.\r
337 \r
338       *  Fixed several causes of EiC reporting memory violations\r
339          when compiling C code with errors coinciding with\r
340          implicit or explicit variable casts.\r
341 \r
342 </pre>\r
343 <b>Changes from 4.1.2 to 4.2.0 (Aug 2 1999)</b>\r
344 <pre>\r
345 \r
346  ******  Jean-Bruno Richard has modified EiC's `:gen' command so \r
347          that it now automatically handles multiplexed callbacks.\r
348 \r
349     ***  The WIN32 binary distribution of EiC also includes eic.lib\r
350          to enable embedding eic, see file c:\eic\examples\embedEiC.c\r
351 \r
352     ***  EiC/config/genstdio now also generates limit.h\r
353          and float.h \r
354 \r
355     ***  EiC's builtin function popen and pclose have been ported to \r
356          the WIN32 platform\r
357       \r
358       *  several unused files have been removed from the distribution:\r
359 \r
360                EiC/module/stdClib/src/fopen.c\r
361                EiC/module/stdClib/src/scanf.c\r
362          \r
363          the following files were removed as they are automatically\r
364          generated at compile time.\r
365 \r
366                EiC/module/stdClib/src/_PLATFORM/stdio.h\r
367                EiC/module/stdClib/src/_PLATFORM/stdlib.h\r
368                EiC/module/stdClib/src/_PLATFORM/errno.h\r
369                EiC/module/stdClib/src/_PLATFORM/stdtypes.h\r
370                EiC/module/stdClib/src/_PLATFORM/limits.h\r
371                EiC/module/stdClib/src/_PLATFORM/float.h\r
372    \r
373       \r
374       *  fixed bug with EiC failing to cast result of bitwise\r
375          negation `~' to `unsigned int' if operand is `unsigned int' or\r
376          to `unsigned long' if operand is `unsigned long'\r
377               \r
378       *  fixed bug with lexical analyzer failing to handle ULONG_MAX\r
379          correctly.\r
380 \r
381       *  corrected definition of LONG_MAX for the WIN32 platform.\r
382       \r
383       *  fixed bug with EiC/main/example/embedEiC.c\r
384          being platform dependent.\r
385 \r
386       *  fixed Jean-Bruno Richard's report that EiC\r
387          was failing to implicitly dereference pointers\r
388          to functions when declared as structure members\r
389          during function calls:\r
390 \r
391               EiC 1> void foo() { printf("hello\n"); }\r
392               EiC 2> typedef struct { void (*f)(); } Test;\r
393               EiC 3> Test *x, y;\r
394               EiC 4> x = &y; x->f = foo;\r
395               EiC 5> (*x->f)(); // explicit dereference old C style\r
396               EiC 5> x->f();    // implicit dereference new C style\r
397               EiC 6> y.f();     // implicit dereference new C style\r
398 \r
399 </pre>\r
400 <b>Changes from 4.1.1 to 4.1.2 (Jul 18 1999)</b>\r
401 <pre>\r
402     \r
403     *** Igloo, a port of EiC to WIN32 with  opengl support, with \r
404         the NT4 glu/glut/opengl DLLs by Jean-Bruno Richard, has\r
405         been added to EiC/contribute directory:\r
406 \r
407           www.pobox.com/~eic/EiCdist/contribute\r
408 \r
409     *** the WIN32 port now looks for the environmental variable\r
410          HOMEofEiC \r
411 \r
412     *** readline has been ported so it works also under WIN32 using MSVC++.\r
413 \r
414 </pre>   \r
415 <b>Changes from 4.1.0 to 4.1.1</b>\r
416 <pre>\r
417 \r
418       * Fixed problems with EiC binary install procedure\r
419 \r
420 </pre>\r
421 <b>Changes from 4.0.1 to 4.1.0 (Jun 26 1999)</b>\r
422 <pre>\r
423 \r
424     ***  An EiC module to interface to the C-API of MySQL \r
425          (3.22.22-2) is available from:\r
426            \r
427             http://www.datagrid.com/~eic/modules\r
428 \r
429   ****** EiC now supports long longs:\r
430 \r
431             EiC > long long a; unsigned long long b;\r
432 \r
433          NOTE at this stage `unsigned long long' is simply\r
434          mapped to `long long'; that is, `unsigned long long'\r
435          is not yet properly supported and is handled as \r
436          signed values. \r
437 \r
438   ****** an alien of port of EiC to the WIN32 platform has been \r
439          contributed by Jean-Bruno Richard.\r
440  \r
441   ***** Ported EiC to FreeBSD.\r
442   \r
443 \r
444     *** The reliance on the use of the `ksh' shell in EiC's make\r
445          system has been removed.\r
446 \r
447       * fixed bug with redeclarations of reference variables \r
448          causing any immediately and previously declared \r
449          variable in the same translation unit to get corrupted; \r
450          example:\r
451 \r
452             EiC 1> int a; int b @ &a;\r
453             EiC 2> double c; extern int b;\r
454 \r
455             `c' will now be of type `int'.\r
456 \r
457        * the platform dependent bug with `:gen' and \r
458          printf's %p conversion character used for \r
459          interfacing with shared variables has been fixed, \r
460          by using %ld.\r
461 \r
462        * fixed bug with EiC's automatic interface generation \r
463          failing to handle enumeration constants properly.\r
464          \r
465        * fixed bug with EiC's automatic interface generation\r
466          failing to handle the return of unsafe pointers\r
467          correctly.\r
468 \r
469 \r
470 </pre>\r
471 <b>Changes from 4.0 to 4.0.1 (May 23 1999)</b>\r
472 <pre>\r
473 \r
474 \r
475      *** Debian `deb' and RedHat `rpm' packages for EiC's\r
476          binary distribution are now available from home\r
477          page.\r
478        \r
479      *** updated  EiC's binary installation procedure -- corrected\r
480          some inconsistencies.\r
481      \r
482      *** changed the names of several files in \r
483          EiC/module/cgihtml/cgi-bin to reflect a more \r
484          consistent nomenclature.\r
485      \r
486        * fixed 3 bugs as reported by Larry Battraw:\r
487          (1) setting HOMEofEiC in EiC/main/Makefile line 13, \r
488             via $(PWD)/.. fails when using bash. Changed to:\r
489 \r
490             HOMEofEiC := $(shell pwd)/..\r
491 \r
492          (2) Under linux the file dirent.c tries to include \r
493             "direntry.h" when it really wants dirent.h:\r
494 \r
495             removed inclusion of direntry.h \r
496         \r
497          (3) In the stdClib directory, the \r
498              file stdio.c defines the following on line 66:\r
499              static FILE * book2[FOPEN_MAX] = {stdin,stdout,stderr};\r
500              Gcc complains about stdin, stdout, etc. not being \r
501              constants. corrected initialisation problem.\r
502 \r
503        * fixed bugs with EiC's binary distribution installation \r
504          procedure.\r
505 \r
506        * fixed bug with EiC's automatic interface generation \r
507          returning pointers from builtin code properly.\r
508 \r
509        * fixed bug with EiC'c automatic interface generation not \r
510          handling          typedefs correctly.\r
511 \r
512 \r
513 </pre>\r
514 <b>Changes from 3.9 to 4.0 Fri (May 17 1999)</b>\r
515 <pre>\r
516 \r
517  ******  EiC now supports callbacks. That is, it is possible for \r
518          compiled code to call EiC interpreter functions.  The \r
519          compiled code doesn't need to be altered. It is all \r
520          handled through  EiC's interface to builtin code. The \r
521          basic design  was developed and contributed to EiC by \r
522          Jean-Bruno Richard.\r
523 \r
524          The same builtin code can make callbacks to different\r
525          functions, which take different number and different \r
526          types of arguments, but not to functions that take a \r
527          variable  number of arguments. \r
528 \r
529          At this stage all the basic scalar types and arrays of\r
530          scalars are supported through the callback\r
531          mechanism. Updates and patches will be made available as\r
532          support for more data types are added.\r
533          \r
534 \r
535  ****** Jean-Bruno Richard also initiated EiC's\r
536          command `:gen', which is used for automating\r
537          the generation of EiC interface code to\r
538          compiled library code:\r
539 \r
540              EiC 1> #include foo.h\r
541              EiC 2> :gen  foo.h\r
542 \r
543          The interface routines will be printed\r
544          to stdout, unless the optional string argument \r
545          is used to redirect the output to a file:\r
546 \r
547              EiC 3> :gen foo.h "foo.c"\r
548 \r
549 \r
550  ****** Mesa/Opengl has been interfaced to EiC via glut. Its\r
551          interface module can be found in: \r
552               \r
553              www.pobox.com/~eic/modules\r
554 \r
555          Example code is also given in the module distribution (GL).\r
556 \r
557  ******* Jochen Pohl has ported EiC to NETBSD and\r
558          Solaris/i386. In doing so Jochen Pohl made the following \r
559          changes to EiC's distribution:\r
560             ./Makefile\r
561             ./src/Makefile\r
562                 - under NetBSD, ksh is installed as /bin/ksh, not /usr/bin/ksh.\r
563             ./README\r
564             ./config/alignment.c\r
565             ./src/metric.h\r
566             ./src/ppc403/include/metric.h\r
567                 - renamed LITTLE_ENDIAN in EIC_LITTLE_ENDIAN to avoid conflict\r
568                   with system header file\r
569                 - for i386 and sparc, use hardware name instead of operating\r
570                    system to define data size and alignment\r
571             ./config/makeconfig\r
572                - if shell variable PWD not set or empty, set it to `pwd`\r
573                - use cp -f to overwrite read only files\r
574             ./main/main.c\r
575                - define __LITTLE_ENDIAN__ as 1 or 0, depending on whether\r
576                  the machine is littel endian or not. Needed on some tests\r
577                  to get them running on both little endian and big endian\r
578                  machines\r
579                - define __LP64__ or __ILP32__, depending on whether the machine\r
580                  has 64 or 32 bit longs and pointers. Needed in in NetBSD\r
581                  header files to add (untested) support for alpha CPU.\r
582             ./module/stdClib/src/dirent.c:\r
583                - telldir() and seekdir() use long, not off_t. would make a\r
584                  difference on NetBSD, where off_t is long long.\r
585             ./src/eicval.h\r
586                - on NetBSD, use long instead of off_t for offval (because\r
587                  off_t is long long)\r
588             ./test/runtest\r
589                - use either echo -n foo or echo foo\c\r
590             ./test/EiCtests/teststdio.c\r
591                - fixed assertions (STDC requires that the return value of\r
592                 fputs() is EOF on error and a nonnegative value otherwise)\r
593             ./test/eicScripts/Driver.c.def\r
594             ./test/eicScripts/script1.eic\r
595             ./test/eicScripts/script2.eic\r
596             ./test/eicScripts/www_eic.eic\r
597               - change path to eic binary to some standard value\r
598             ./test/posix.1/tstfilelock.c\r
599               - use memset() to initialize struct flock to zero.\r
600                 necessary because under NetBSD the l_start and\r
601                 l_len values are 64 bit, but only 32 bit can be\r
602                 set from eic\r
603               - before F_GETLK, set lock type to F_WRLCK. necessary\r
604                 because F_GETLK returns the first lock that blocks\r
605                 the lock description pointed to by the third argument.\r
606                 if this lock description has lock type F_UNLCK,\r
607                  probably no lock will be returned.\r
608             ./test/sniptests/bitcnt_4.c\r
609             ./test/sniptests/bitops.h\r
610               - use unsigned long instead of long to avoid infinite\r
611                 recursion if a negative long is passed to either\r
612                 ntbl_bitcnt() or btbl_bitcnt().\r
613               - fixed btbl_bitcnt() to work on big endian machines too.\r
614             ./test/sniptests/dbl2long.c\r
615               - make this test work on big endian machines (and, hopefully,\r
616                on LP64 machines).\r
617 \r
618     *** There is now an Advanced section\r
619         in EiC's documentation explaining how\r
620         to build an EiC module, and how to perform\r
621         callbacks.\r
622 \r
623             www.pobox.com/~eic/EiC\r
624 \r
625     *** EiC web page now contains a separate section\r
626         for EiC modules. \r
627 \r
628             www.pobox.com/~eic/modules\r
629 \r
630     ***  The parse_form_encoded function of\r
631          the EiC's cgihtml library module has been modified\r
632          to do buffered IO rather than just single byte\r
633          IO. This improves the speed of this\r
634          function for http file uploads by 2 to 3 fold.\r
635 \r
636     ***  Several changes and additions have been made to\r
637          EiC's module MathStats.\r
638 \r
639     ***  The infinite loop that one runs into by running \r
640          "eic < infile" if there is no `:exit' at the end\r
641          of the infile has been fixed -- kindof. EiC now\r
642          recognises the EOF for this purpose iff the\r
643          Non-interactive flag `A' is used:\r
644 \r
645               eic -As < infile\r
646          \r
647          Otherwise `:exit' must still be present. \r
648 \r
649 \r
650       *  fixed bug with the address operator\r
651          not working with pointers:\r
652 \r
653            EiC 1> int b = 22; int *a = &b;\r
654            EiC 2> int *c @ &a;\r
655            EiC 3> assert(*c == 22);\r
656 \r
657       *  fixed bug with redeclaration \r
658          error being reported for extern\r
659          definitions of variables declared\r
660          previously as reference variables\r
661          via the address `@'  operator \r
662 \r
663             EiC 1> int a; int b @ &a;\r
664             EiC 2> extern int b;\r
665 \r
666       *  fixed bug with EiC not being reentrant\r
667          with respect to callback code.\r
668 \r
669       *  fixed bug with EiC_parseString failing\r
670          if called from a translation unit,\r
671          which have strings that gets gabbage collected.\r
672          For example:\r
673 \r
674          EiC > while(i++<5) printf("%d\n",func());\r
675 \r
676          where func is a builtin function that\r
677          calls EiC_parseString. The string\r
678          "%d\n", would be gabbage collected after\r
679           the first call to EiC_parseString, and\r
680          before the calling translation is finished.\r
681  \r
682 \r
683       *  fixed bug with EiC reporting a redeclaration error\r
684          for macros with null token sequence when seen more \r
685          than once:\r
686          \r
687              EiC 1> #define X\r
688              EiC 2> #define X\r
689 \r
690       *  Fixed Jean-Bruno Richard's report of EiC\r
691          failing with the unary opertor `+' when\r
692          applied to constants:\r
693          \r
694                 EiC 1> #define X 1\r
695                 EiC 2> +X;\r
696 \r
697        * Incorporated Tim Baker's bug fixes with respect\r
698          to handling declared const types within \r
699          unary operations properly and EiC failing to\r
700          parse if-statements, if the type of the expression\r
701          evaluates to unsigned short int:\r
702 \r
703            unsigned short a[1] = {1};\r
704            if (a[0])\r
705                a[0]--;\r
706 \r
707 </pre>\r
708 <b>Changes from 3.8 to 3.9 Fri (Apr  2 1999)</b>\r
709 <pre>\r
710 \r
711  ******  Eugene Brooks has helped modify EiC so it \r
712          builds without using its own headers, and\r
713          no longer defines its own version of the\r
714          stdio functions. This is designed to eliminate\r
715          conflicts between system code and EiC when\r
716          embedding EiC into other systems\r
717  ******  EiC no longer compiles out-of-the-box\r
718          under SUNOS 4.1 or less -- unless your C \r
719          implementation is ISO/ANSI C compliant           \r
720      **  EiC now also parses `\r\n' line endings rather\r
721          than just the Unix style `\n'\r
722      **  Matt Minnis has modified EiC's show\r
723          routine so that it also displays a variables\r
724          value along with its type\r
725       *  fixed bug with EiC becoming unstable\r
726          when an error occurs during the parsing of a translation\r
727          unit with a prototype to a builtin function.\r
728          This is a fix to one of EiC's most outstanding\r
729          bugs :)\r
730       *  re-fixed bug with EiC not allowing for the\r
731          re-declaration of enumeration types\r
732       *  fixed bug with EiC's restart mechanism sometimes reporting\r
733          an illegal operation when initiated via\r
734              eic -r or eic -R\r
735       *  fixed bug with EiC not handling global scalar const \r
736          objects properly.\r
737 \r
738 </pre>         \r
739 <b>Changes from 3.7.5 to 3.8 (Feb 6 1999)</b>\r
740 <pre>\r
741 \r
742  ******  added the address specifier operator `@':\r
743 \r
744             int a @ dddd;\r
745 \r
746           defines `a' to be an integer whose value\r
747           is at address dddd. dddd must be a constant \r
748           integral express. This will then, among other things,\r
749           allow the following type of call to be setup from \r
750           outside EiC:\r
751           \r
752              double d;\r
753              EiC_parseString("double d @ %ld",(long)&d);\r
754 \r
755           At this stage the address specifier can be applied to\r
756           objects or to functions that accept void arguments \r
757           and which return void:\r
758 \r
759              void foo(void) { puts("Hello world!\n");}\r
760              EiC_parseString("void foo(void) @ %ld",(long)foo);\r
761 \r
762     ***  Bret Deck and Eugene Brooks have improved\r
763          EiC error detection mechanism for identifying array bound\r
764          and memory address violations.     \r
765     ***  technical document EiC/doc/tech_docs/typesets.doc\r
766          explains how object types and operators are (can be)\r
767          added to EiC.\r
768     ***  I have rationalised/cleaned-up EiC stdClib interface.\r
769          However, a major revision of how EiC's implements the\r
770          standard C library is under development.\r
771       *  fixed bug with EiC's interpreter not being\r
772          reentrant\r
773       *  fixed bug with EiC not handling typedef types correctly \r
774          with respect to scope such as:          \r
775               typedef struct { char a; } c;\r
776               typedef struct { short c; } scs;\r
777       * fixed bug with EiC not determining the sizeof\r
778         enumeration types; that is:              \r
779                 sizeof(<enumeration_type>)\r
780       * fixed bug with the use of enumeration types\r
781         as structure/union members\r
782       * fixed bug with EiC not handling pointers to\r
783         enumeration variables correctly.\r
784       * fixed bug with EiC not allowing for the\r
785         re declaration of enumeration types.\r
786       * Massaged EiC's tex documents so as LaTeX2html \r
787         would do a better job in building EiC's\r
788         online documentation. \r
789 \r
790 \r
791 </pre>\r
792 <b>Changes from 3.7.2 to 3.7.5 (Nov 23 1998)</b>\r
793 <pre>\r
794 \r
795   ****** added the pointer type qualifiers `safe' and \r
796          `unsafe' to the EiC language. For example:\r
797 \r
798                 int * unsafe p;\r
799 \r
800          defines `p' to be an `unsafe' pointer or a normal C type \r
801          pointer, while\r
802 \r
803                 int * safe p;  \r
804 \r
805          defines `p' to be a `safe' pointer, which is the normal \r
806          EiC type pointer. \r
807          Rationale: to make it easier to interface EiC to builtin \r
808             library functions, which use `unsafe' pointers and take \r
809             argument types such as: arrays of pointers or structures  \r
810             with pointer members. \r
811   ****** to control the default pointer type, three pragma\r
812          directives have been added to the EiC language and which work \r
813          on a stack principle:\r
814 \r
815             #pragma  push_safeptr   /* default pointer type is safe */\r
816             #pragma  push_unsafeptr /* default pointer type is unsafe */\r
817             #pragma  pop_ptr        /* return to previous ptr type. */\r
818 \r
819      *** the EiC_parseString function now accepts variable \r
820          arguments:\r
821         \r
822                 EiC_parseString(char *fmt, ...);\r
823               \r
824      *** the howto documentation for adding builtin \r
825          functions to EiC has been upgraded to reflect\r
826          the usage of safe and unsafe pointer, see:\r
827              .../EiC/doc/tech_doc/builtin.doc\r
828      *** the `p' conversion character in printf now \r
829          prints out in hexidecimal format.\r
830      *** the `p' conversion character in scanf now\r
831          matches a hexidecimal input sequence corresponding\r
832          to the output style of printf. \r
833        * fixed EiC's Linux definitons of various system\r
834          types not being libc6 compatible; such as\r
835           `struct stat', `struct dirent' and `struct tm'\r
836        * fixed bug with the casting of integer constants\r
837          to pointers:\r
838                      int *p = (int*)dddd;\r
839          where dddd is a numeric integer constant.           \r
840        * fixed bug with EiC's `:rm' facility\r
841          failing to remove properly typedef definitions\r
842          of array types.\r
843 \r
844 </pre>\r
845 <b>Changes from 3.7.1 to 3.7.2 (Aug 23 1998)</b>\r
846 <pre>\r
847     \r
848        * fixed bug with internal signal code not being\r
849          GNU libc6 compatible\r
850      *** The PowerPC 403 port of EiC has \r
851          been incorporated into the main distribution\r
852          of EiC.\r
853      *** EiC now considers it illegal for the \r
854          function `main' not to return type `int'\r
855      *** In script mode, control is now passed\r
856          to a main function if it exists. This\r
857          makes it easier to run C programs via\r
858          EiC's script mode\r
859        * fixed bug with EiC failing to recognise\r
860          the ISO C additional escape-code '\?'\r
861 \r
862 </pre>\r
863 <b>Changes from 3.7 to 3.7.1 </b>\r
864 <pre>\r
865 \r
866        * fixed bug with sys/stat.h for\r
867          SOLARIS and IRIX platforms\r
868        * fixed bug in readdir on the SOLARIS\r
869          and IRIX platforms due to safeptrs      \r
870 \r
871 </pre>\r
872 <b>Changes from 3.6 to 3.7</b>\r
873 <pre>\r
874         \r
875        * added the unistd.h function chdir\r
876      *** added facilities to interface with EiC\r
877          from other programs. \r
878          See the EiC/main/README file in the source\r
879          distribution for more details.\r
880        * fixed bug with printf handling:\r
881            printf("%s\n",NULL);\r
882        * fixed bug with strtok due to \r
883           safe pointers\r
884      *** EiC can now be compiled on a HPUX\r
885          platform thanks to Alf Clement.\r
886      *** The main distribution now has a contribution\r
887          section, that includes a port of EiC for the PowerPC\r
888          403 thanks to Larry Battraw.\r
889      *** Eugene Kim's upgrade of cgihtml (1.69) \r
890          has been incorporated\r
891 \r
892 </pre>\r
893 <b>Changes from 3.5 to 3.6 </b>\r
894 <pre>\r
895 \r
896       *** added module `xv', which\r
897           provides a primative interface\r
898           to xv.         \r
899         * Fixed bug in EiC's test-module\r
900             EiC/test/EiCtests/testinclude.c \r
901         * Documentation updated to reflect\r
902           EiC's internet programming facility.\r
903         * if EiC is installed in /usr/local\r
904           then the environmental variable \r
905           HOMEofEiC does not need to be\r
906           defined             \r
907       *** added the command line switch '-e'.\r
908           It is used  for debugging CGI scripts.\r
909           See documentation for details. \r
910         * fixed bug with fgetc not returning \r
911           the next character as an unsigned char\r
912           converted to an int\r
913         * fixed bug with EiC core dumping when\r
914           the environmental variable HOMEofEiC is \r
915           not defined\r
916 \r
917 </pre>\r
918 <b>Changes from 3.4 to 3.5</b>\r
919 <pre>\r
920 \r
921       *** added module `cgihtml'\r
922    ****** all global variables and functions declared \r
923           static within an include file are now private to \r
924           that file, and are only visible within the scope of\r
925           the include file. Therefore, in general,  their \r
926           names will not clash with the names of any global \r
927           variable visible from the EiC prompt or within any other \r
928           include file.\r
929         * fixed bug with EiC becoming internally\r
930           unstable after passing structures/unions\r
931           by value to functions from scope level\r
932           file:\r
933                 EiC > struct {int a, b;} ab_t;\r
934                 ...\r
935                 EiC > foo(ab_t); // eic is now unstable\r
936         * fixed bug with type conflicts generated by\r
937           declarations of the type:\r
938                 int ff(char *ff);\r
939           and definitions of the type:\r
940                 int ss(int ss) { return ss;}\r
941         * fixed bug caused by safe pointers\r
942           when passing structures by value\r
943           to functions.\r
944         * rationalised slightly the header\r
945           files in EiC/src\r
946 \r
947 </pre>\r
948 <b>Changes from 3.3 to 3.4 </b>\r
949 <pre>\r
950 \r
951       *** added modules `tools' and `examples'  \r
952         * documentation updated\r
953       *** most of the example code given in\r
954           EiC's documentation is now included\r
955           in the directory:\r
956                  ../EiC/module/examples\r
957       *** the installation procedure has\r
958           changed; this is because `eicc' no\r
959           longer exists.\r
960    ****** EiC can run its own shell scripts of the form:\r
961                #!/usr/local/bin/eic -f\r
962                #include <stdio.h>\r
963                printf("Hello, world.\n");\r
964         * fixed bug with enum being declared extern:\r
965                 enum rgb {RED,GREEN, BLUE};\r
966                 extern enum rgb colour;\r
967                 enum rgb colour = RED;\r
968         * fixed bug with the comma operator processing\r
969           syntax of the form:\r
970                 foo(),f;\r
971         * fixed bug with boundary affects, due to \r
972           safe pointers, in `memmove' and `strncpy'\r
973         * fixed bug with eic failing to cast \r
974           `unsigned int' to `long' properly \r
975           on platforms where sizeof(int) == sizeof(long)\r
976         * fixed bug with eic to pass command line \r
977           arguments in double quotes properly:\r
978                 % eic main2.c " hello  world  "\r
979         * fixed bugs with safe pointers when dealing with:\r
980                 int a, b; memcpy(&a,&b,sizeof(b));\r
981         * fixed bug with using casts with type qualifiers:\r
982                 (const char *)p;\r
983         * fixed bug with the incrementing or deincrementing\r
984           of arrays passed to functions:\r
985                 void foo(char *argv[]) \r
986                         ...\r
987                        *++argv;    //bug here\r
988         * fixed bug with the initialisation of char arrays\r
989           of the type:\r
990                  char buf[13] = "\0""1234456789";\r
991         * fixed bug with pp directives of the type: \r
992                   #if !(hello)\r
993         * for main, argv[argc] is now set to NULL on setup. \r
994         * fixed bug with the formation of a new macro during\r
995           an expansion that extends across multiple lines. \r
996 \r
997 </pre>\r
998 <b>Changes from 3.2 to 3.3 </b>\r
999 <pre>\r
1000 \r
1001       *** improved array bound checking functionality   \r
1002         * update of EiC's documentation (still needs some work though)  \r
1003       *** implemented the <stdlib.h> function `atexit'\r
1004         * fixed bug with rename not removing the oldfile\r
1005         * fixed bug with gets setting the wrong flag, preventing\r
1006           it from working correctly with the rest of the <stdio.h> \r
1007           IO functions.\r
1008       *** added the <stdio.h> function freopen\r
1009         * fixed several bugs with EiC's <stdio.h> functions\r
1010 \r
1011 </pre>\r
1012 <b>Changes from 3.1 to 3.2</b>\r
1013 <pre>\r
1014 \r
1015         * fixed several bugs in EiC's <string.h>\r
1016           functions\r
1017       *** added the switch -N to stop eic from using\r
1018           any startup.h file when started.\r
1019    ****** MADE EiC POINTER SAFE (alpha stage) \r
1020         * fixed bug with EiC repeatedly catching\r
1021            the same SIGNAL violation\r
1022         * fixed bug with the initialising of\r
1023           non STR variables\r
1024 \r
1025 </pre>\r
1026 <b>Changes from 3.0 to 3.1</b>\r
1027 <pre>\r
1028 \r
1029         * fixed defect with showMacro.\r
1030         * corrected NULL pointer definition.\r
1031         * fixed typo in "unsigned char" \r
1032         * fixed checking of function return type\r
1033       *** added POSIX.1 functions `access' and `fcntl'\r
1034         * convert to unsigned int for `%b'; i.e. \r
1035            printf("%b",15) ->  binary numbers are unsigned.\r
1036         * fixed bug with indexing arrays of pointers with\r
1037           the assign operator.\r
1038         * prevented interpreter functions from masking \r
1039           builtin functions.\r
1040         * fixed problem with the initialisation of a global\r
1041           char NULL pointer:\r
1042               char *p = NULL;\r
1043       *** added the interpreter command ":clear"\r
1044 \r
1045 \r
1046 </pre>\r
1047 <b>Changes from 0 to 3.0</b>\r
1048 <pre>\r
1049 \r
1050         Too many to list\r
1051 \r
1052 </pre>\r
1053 </multicol>\r
1054 \r
1055 \r
1056 <ADDRESS>\r
1057 <!-- ADDRESS field used for automatic insertion of links -->\r
1058 </ADDRESS>\r
1059 \r
1060 </body>\r
1061 </html>\r
1062 \r
1063 \r
1064 \r
1065 \r
1066 \r
1067 \r
1068 \r
1069 \r
1070 \r
1071 \r
1072 \r
1073 \r