Seed7 Changelog

What's new in Seed7 05.20160229

Mar 1, 2016
  • The function fltCmp in flt_rtl.c has been improved to work correct in the case that isnan returns neither 0 nor 1 (Many thanks go to Arnel L. for reporting this problem).
  • The function determineGetaddrlimit in chkccomp.c has been improved to include before . FreeBSD needs that to work correctly (Many thanks go to Pietro Cerutti for providing a fix and explaining the background.
  • The function getOsCwd has been added to cmd_rtl.c. With this function it is possible to read (e.g. under Linux) a current working directory that is longer than PATH_MAX.
  • Documentation comments have been improved in encoding.s7i.
  • The program chkccomp.c has been improved to write definitions of USE_DIRENT, USE_DIRWIN, OS_WIDE_DIR_INCLUDE_DIR_H, os_DIR, os_dirent_struct, os_opendir, os_readdir, os_closedir, INCLUDE_SYS_UTIME, os_utimbuf_struct, USE_ALTERNATE_UTIME, os_utime_orig, os_utime, os_chdir, OS_GETCWD_MAX_BUFFER_SIZE, os_getcwd, os_mkdir, os_rmdir, OS_CHMOD_INCLUDE_IO_H, os_chmod, os_remove, os_rename, os_system, os_fopen, os_popen, os_pclose, DEFINE_WGETENV, os_getenv
  • The functions keys_helem and values_helem in hshlib.c and hsh_rtl.c have been improved to use a loop instead of a tail recursion. For compilers that don't recognize the tail recursion this results in a speed improvement (Gcc recognizes tail recursions so there is no speed improvement).
  • The functions free_helem and free_hash in hsh_rtl.c have been improved to stop searching for helems as soon as the last helem has been freed.
  • The functions helem_data_to_list and helem_key_to_list have been improved to use a loop instead of a tail recursion (see above).

New in Seed7 05.20160130 (Mar 1, 2016)

  • A code page for pdf doc encoding has been added to charsets.s7i.
  • An optimization for the length of concatenated strings has been added to the compiler (in file str_act.s7i).
  • Checks for the string length function have been added to chkstr.sd7.
  • The checks for the string operators := and &:= have been rewritten to use one line for each testcase.
  • The example program rever.sd7 has been improved to allow a level of 10.
  • The compiler has been improved to create code that raises the exception ACTION_ERROR, when at runtime no implementation function is found for an interface function.
  • The performance of the hash table functions keys (which returns all keys) and values (which returns all values) has been improved in interpreted and compiled programs. For an average testcase hshKeys() (in hsh_rtl.c) now uses only 27% of the previous runtime (measured with gcc and valgrind).
  • In hshlib.c the performance of the functions free_hash, keys_helem, keys_hash, values_helem, values_hash, for_helem, for_hash, for_key_helem, for_key_hash, for_data_key_helem and for_data_key_hash has been improved.
  • In hsh_rtl.c the performance of the functions free_hash, keys_helem, keys_hash, values_helem and values_hash has been improved.
  • In listutl.c the performance of the functions helem_data_to_list, hash_data_to_list, helem_key_to_list and hash_keys_to_list has been improved.
  • Several functions in cmd_rtl.c have been improved to work correctly, when logError is activated (os_path is freed now after its last use in logError).

New in Seed7 05.20151216 (Mar 1, 2016)

  • A compiler bug, triggered with a nested function and an array parameter, has been fixed. Many thanks go to "rfnbs" for providing an excellent bug report. The bug was fixed by changing the type of the global variable 'prog' and by saving and restoring the 'prog' variable in the functions get_create_call_obj and get_destroy_call_obj.
  • The functions toAscii85 and fromAscii85 have been added to the library encoding.s7i.
  • Definitions of for-each-loops, which have an until condition and loop over the characters of a string, have been added to the library forloop.s7i.
  • The function gzcompress has been added to the library gzip.s7i.
  • The type of the global variable 'prog' has been changed from progRecord to progType (pointer to progRecord).
  • Changes have been done in analyze.c, atom.c, blockutl.c, dcllib.c, doany.c, entutl.c, error.c, exec.c, expr.c, findid.c, findid.h, match.c, name.c, parser.c, prclib.c, prg_comp.c, prglib.c, reflib.c, runerr.c, s7.c, sctlib.c, syntax.c, syvarutl.c, syvarutl.h, traceutl.c and type.c to reflect that the type of the variable 'prog' changed from struct to pointer to struct.
  • The functions get_create_call_obj and get_destroy_call_obj in executl.c have been changed to save, set and restore the variable 'prog'.
  • In chkccomp.c all functions, which have a name starting with 'detemine', have been renamed such that the name starts with 'determine'.

New in Seed7 05.20151129 (Mar 1, 2016)

  • The library bitdata.s7i, which provides functions to read and write bits to and from strings, has been added.
  • The libraries deflate.s7i and inflate.s7i have been changed to use functions from bitdata.s7i.
  • The undocumented function reverseBits has been moved from deflate.s7i to bitdata.s7i. The meaning of the two parameters has been changed.
  • The constant array reverseBits has been added to bitdata.s7i. All calls of the function reverseBits have been removed.
  • Calls of the function reverseBits in deflate.s7i have been replaced by usages of the array reverseBits.
  • In inflate.s7i two loops have been replaced by usages of the array reverseBits.
  • The library lzw.s7i, which provides support for Lempel-Ziv-Welch compression and decompression, has been added.
  • The function gzuncompress has been added to gzip.s7i. This function decompresses a string that was compressed with zlib (RFC 1950).
  • The function literal(in char: ch) in seed7_05.s7i has been changed to write character literals with the new numeric escape sequence.
  • In the function detemineOdbcDefines (file chkccomp.c) the test program, that verifies the linker option for the static lib, has been improved to work correctly under Windows.
  • Definitions for SQLGetData() have been added to db_odbc.h and sql_odbc.c.
  • Support to read a CLOB (Character large object) from an ODBC database has been added to sql_odbc.c.

New in Seed7 05.20151110 (Mar 1, 2016)

  • The program toutf8.sd7 has been improved to accept byte order marks for the encodings UTF-16BE and UTF-16LE.
  • Documentation comments have been improved in bigint.s7i, integer.s7i, big_gmp.c, big_rtl.c, bst_rtl.c, flt_rtl.c, int_rtl.c, pcs_rtl.c, rfl_data.c, set_rtl.c, str_rtl.c and typ_data.c.
  • In analyze.c and prg_comp.c function names and parameter names have been changed to use camel case.
  • The global variable programPath and the function relativeToProgramPath have been removed. They were only used when the makefile setting PATHS_RELATIVE_TO_EXECUTABLE was active (this setting was not used by any makefile for years).
  • All explanations related to PATHS_RELATIVE_TO_EXECUTABLE has been removed from the FAQ and from src/read_me.txt.
  • The functions hsh_incl and hsh_update in hshlib.c have been changed to raise RANGE_ERROR when cmp_func is NULL.

New in Seed7 05.20151029 (Mar 1, 2016)

  • The explanation in the FAQ, how Seed7 programs can be debugged with Eclipse, has been improved.
  • The function commandPath in process.s7i has been improved to return always "", when the executable is not found.
  • The functions processOptions and printOptions in s7.c have been improved to use a parameter instead of a global variable.
  • Calls of logFunction have been added to hsh_rtl.c, listutl.c, match.c and rfl_data.c.
  • In striAsUnquotedCStri and bstriAsUnquotedCStri (file striutl.c) the size of the static char buffer is computed at compile-time instead of estimated.
  • Several numeric literals have been replaced by defined constants.
  • The makefile mk_freebsd.mk has been changed to use numutl.c instead of sql_util.c.
  • To improve the readability the maximum line length in several C source files has been reduced.

New in Seed7 05.20151011 (Mar 1, 2016)

  • Errors in the bigInteger operators +:= and -:= have been fixed. This errors were triggered with expressions like A +:= A; when the value of A has a value in a specific range. Thanks go to Fausto C. for reporting this problem.
  • The example program ide7.sd7 has been improved to start programs as process and to allow their termination.
  • The chapter about errors in the manual has been improved.
  • The picture terminate_pic has been added to pic16.s7i and pic32.s7i.
  • Checks for +:=, -:= and *:= have been added to chkbig.sd7.
  • Documentation comments have been added to aes.s7i, arc4.s7i, bin32.s7i, bin64.s7i, complex.s7i, des.s7i and tdes.s7i.
  • Errors in the functions bigAddAssign and bigSbtrAssign have been fixed. Now the check for a negative delta is done before the variable is changed. This fixes the errors with A +:= A; and A -:= A; .
  • The makefile mk_mingc.mak has been improved such that it can be called without the parameters S7_LIB_DIR and SEED7_LIBRARY.
  • The program chkccomp.c has been improved to check if pow() works correct when the exponent is the maximum odd value that fits in a float respectively double.
  • A buffer in a test program used by chkccomp.c has been enlarged to avoid a possible buffer overflow.
  • Calls of logFunction have been added to big_gmp.c, big_rtl.c and traceutl.c.
  • The definition of CATCH_SIGNALS has been removed from the makefiles. Now signal handlers are used when one of the functions sigaction() and signal() is available.
  • The function socAddressCStri() has been added to soc_rtl.c. Now this function is used instead of bstriAsUnquotedCStri(), to write addresses in log functions.
  • The function printParameters() has been added to pcs_unx.c and pcs_win.c. In log functions this function is now used to print parameter lists.
  • The unused functions bin_add and bin_add_assign have been removed from bin64.s7i, binlib.c, binlib.h and primitiv.c.

New in Seed7 05.20150927 (Mar 1, 2016)

  • The library cgidialog.s7i, which provides dialogs that are shown with a web browser, has been added.
  • The example program ide7.sd7 has been added. This program is a cgi dialog demo program.
  • The library browser.s7i, which opens a web browser and provides a connection to it, has been added.
  • The chapter about types in the manual has been improved.
  • The compiler has been improved to create code for the action FLT_DIV_ASSIGN in a way that works with icc (icc has problems when */ precedes /= ).
  • The program chkccomp.c has been improved to write definitions of OVERFLOW_SIGNAL and PRINTF_SUPPORTS_VARIABLE_FORMATS.

New in Seed7 05.20150914 (Mar 1, 2016)

  • The FAQ has been improved to explain the support for Unicode names and how Unicode names are activated with a pragma.
  • The heap management for strings has been improved to determine the maximum length of the free lists automatically at run-time. This improves the runtime, when the compiler (s7c) compiles itself, by 2.7% (measured with gcc and valgrind). In many other situations this optimization has also a positive effect.
  • The interpreter has been improved to allow experimental support for case statements with a string decision expression.
  • The compiler has been improved to use the functions abs() respectively labs() for the absolute value of an integer (when overflow checking is switched off).
  • Tests for abs have been added to chkint.sd7.
  • The example program raytrace.sd7 has been improved to use result variables with descriptive names.
  • The configuration values LONG_SIZE and BOOLTYPE have been added to cc_conf.s7i.
  • Interpreter and compiler have been changed to use the type _Bool or bool for boolean values, when one of them is available. This allows some optimizations by the C compiler, since the possible values are restricted to 0 and 1.
  • The deprecated functions open_utf8, open_utf16, open_echo, open_line, open_tee, open_more, open_upper, open_lower, open_reverse, open_window and open_field have been removed. The replacement functions are openUtf8, openUtf16, openEcho, openLine, openTee, openMore, openUpper, openLower, openReverse, openWindow and openField.
  • The deprecated function removeAnyFile has been removed. The replacement function is removeTree.
  • The macros 'likely' and 'unlikely' have been added to functions in analyze.c, arrlib.c, biglib.c, bstlib.c, chrlib.c, cmdlib.c, dcllib.c, drw_win.c, drw_x11.c, fillib.c, fil_unx.c, fil_win.c, numutl.c, pollib.c, prclib.c, sql_lite.c, sql_my.c, sql_oci.c, sql_odbc.c, sql_post.c and ut8_rtl.c.
  • The definition of the macro logFunction in common.h has been improved to write the file name.
  • Calls of logFunction have been added to arrlib.c, prclib.c, big_gmp.c, cmd_unx.c cmd_win.c dir_dos.c, dir_win.c, drw_win.c, set_rtl.c, sql_lite.c, sql_my.c, sql_oci.c, sql_odbc.c, sql_post.c and sql_rtl.c.
  • Checks for err_info != OKAY_NO_ERROR have been replaced by checks for pointer variables beeing NULL in sql_lite.c, sql_my.c, sql_oci.c, sql_odbc.c and sql_post.c. Since the address of err_info is used this variable cannot be placed into a register.
  • Several variables have been changed to constants.
  • Several calls of strlen() have been replaced with calls of the macro STRLEN() (STRLEN() computes the string size of a literal at compile-time).
  • The files drw_win.c and tim_win.c have been improved to reduce the number of C compiler warnings.
  • The function setupFiles in fil_win.c has been improved to set only redirected files to _O_BINARY mode. Real console files are left in _O_TEXT mode. This way the ENTER key is translated to '\n'.
  • The function freelistStatistic has been added to heaputl.c.
  • Several definitions have been changed to use a static storage class.

New in Seed7 05.20150823 (Mar 1, 2016)

  • The example program raytrace.sd7 has been added. This program is a raytracing demo.
  • The library vector3d.s7i, which supports 3D vectors, has been added.
  • The compiler s7c has been improved to create code to manage free lists for struct data. This avoids many calls of malloc() and free(). The maximum length of the free lists is determined automatically at run-time.
  • In color.s7i the elements of the type color have been renamed to redLight, greenLight and blueLight. The files mahjong.sd7 and draw.s7i have been changed to use the new element names of the type color.
  • The functions doubleToCharBuffer, fltDgts and fltSci in flt_rtl.c have been improved to work without calls of strlen().
  • The function bigHexCStri in big_rtl.c has been improved to use fewer calls of memmove() and strlen().
  • The function process_pragma() in analyze.c has been improved to use fewer calls of strlen().
  • The function opendir in dir_dos.c and dir_win.c has been improved to work without calls of strcat().
  • The functions striAsUnquotedCStri and bstriAsUnquotedCStri in striutl.c have been improved to use fewer calls of strlen().
  • The function cp_to_command in striutl.c has been improved to use fewer calls of os_stri_strlen.
  • The function getcaps in trm_cap.c has been improved to use fewer calls of strcat().
  • The function fix_capability in trm_inf.c has been improved to use fewer calls of strcat().
  • The function strLit in str_rtl.c has been improved to work without calls of strlen().
  • The functions calculate_output_length and print_stri in error.c have been improved to use fewer calls of strlen().
  • The function prot_os_stri has been removed from traceutl.c.
  • The macros 'likely' and 'unlikely' have been added to functions in act_comp.c, analyze.c, arr_rtl.c, big_gmp.c, big_rtl.c, chr_rtl.c, cmd_rtl.c, cmd_unx.c, cmd_win.c, con_win.c, hshlib.c, hsh_rtl.c, soc_rtl.c, striutl.c and traceutl.c.
  • Checks for err_info != OKAY_NO_ERROR have been replaced by checks for pointer variables beeing NULL in cmd_win.c, dir_rtl.c, fil_rtl.c, pcs_unx.c, pcs_win.c, striutl.c. Since references to err_info are used this variable cannot be placed into a register. The pointer variables used now can be placed into a register.
  • Variables in big_rtl.c, dir_rtl.c and striutl.c have been changed to constants.

New in Seed7 05.20150802 (Mar 1, 2016)

  • An explanation, how Seed7 programs can be debugged with Eclipse, has been added to the FAQ.
  • Checks for the operators > have been added to chkbig.sd7.
  • Checks for string comparisons ( < >= ) and the operator 'mult' have been added to chkstr.sd7.
  • The functions bigLShift, bigLShiftAssign, bigRShift and bigRShiftAssign in big_gmp.c and big_rtl.c have been improved to avoid a signed integer overflow, when the shift count is the most negative integer.
  • The compiler has been improved to optimize code for bigInteger shifts and compares.
  • The compiler has been improved to create inline code for some string comparisons ( < >= ) and the operator 'mult'.
  • In int_rtl.c the function intLpad0 has been improved to avoid a signed integer overflow when the number is the most negative integer.
  • In numlit.c the functions decimalValue, basedValue, readBigBased, basedInteger, intExponent and lit_number have been changed to work with unsigned integers.
  • Calls of logFunction have been added to atom.c, doany.c, entutl.c, exec.c, executl.c, expr.c, findid.c, libpath.c, name.c, object.c, parser.c, syntax.c, token.c and type.c.
  • The type of digit_value elements has been changed to uintType.
  • The function drwImage in drw_win.c has been improved to avoid a multiplication in the inner loop

New in Seed7 05.20150720 (Mar 1, 2016)

  • The chapter about errors in the manual has been improved.
  • In seed7_05.s7i parameter declarations without parameter name (which use the keyword 'param') have been changed to parameter declarations with parameter name.
  • The compare functions in rational.s7i and bigrat.s7i have been improved.
  • The compiler has been improved to use inline code for the integer compare function.
  • Checks for the compare function have been added to chkint.sd7.
  • Checks for hash tables with bigInteger, rational and bigRational keys have been added to chkhsh.sd7.
  • Calls of logError have been added to pcs_unx.c, pcs_win.c, ref_data.c,
  • Calls of logFunction have been added to big_rtl.c, blockutl.c, drw_win.c, flistutl.c, gkb_win.c, gkb_x11.c, heaputl.c, hshlib.c, identutl.c, infile.c, listutl.c, pcs_unx.c, pcs_win.c, ref_data.c, tim_dos.c, tim_unx.c, tim_win.c, trm_inf.c, typ_data.c, typeutl.c and typlib.c.
  • In cc_conf.s7i, flt_act.s7i, cmd_rtl.c and common.h the configuration value MAX_INTEGER_IN_FLOATTYPE has been renamed to INT_RANGE_IN_FLOATTYPE_MAX.
  • Documentation comments have been added to string.s7i, strlib.c and str_rtl.c

New in Seed7 05.20150705 (Mar 1, 2016)

  • The chapters describing statements and object orientation in the manual have been improved.
  • The library tls.s7i has been improved to use explicit initialisation vectors (IVs) for block ciphers, when the TLS version is 1.1 or higher.
  • The library tls.s7i has been improved to avoid raising exceptions, when the handshake fails.
  • The list of supported ciphers in tls.s7i has been changed.
  • The functions round and trunc in float.s7i have been improved to raise RANGE_ERROR, when the float value cannot be represented as integer.
  • The function log2 has been added to the library math.s7i.
  • Checks for the functions str, round, trunc and log2 and for the power operator (**) have been added to chkflt.sd7.
  • The comanche webserver has been improved to continue without exception, when the client closes the socket.
  • The comanche webserver now accepts parameters with drive letters.
  • The program chkccomp.c has been improved to write definitions of HAS_LOG2, HAS_CBRT, HAS_EXP, HAS_EXP2, HAS_EXP10, POW_OF_NAN_OKAY, POW_OF_ZERO_OKAY, POW_OF_ONE_OKAY, POW_EXP_NAN_OKAY and POW_EXP_MINUS_INFINITY_OKAY.
  • The configuration values HAS_LOG2 and HAS_CBRT have been added to cc_conf.s7i.
  • In config.h the configuration macros DO_HEAPSIZE_COMPUTATION, DO_HEAP_STATISTIC, DO_HEAP_CHECK and CHECK_INT_OVERFLOW have been changed to have a value of 0 or 1.
  • Documentation comments have been improved in cc_conf.s7i, float.s7i, fltlib.c, str_rtl.c and ut8_rtl.c.
  • Calls of logFunction and logError have been added to actutl.c, fltlib.c, literal.c, sql_rtl.c, striutl.c and ut8_rtl.c.
  • The macros 'likely' and 'unlikely' have been added to functions in arr_rtl.c, int_rtl.c, ref_data.c, rfl_data.c, set_rtl.c, sql_my.c, sql_rtl.c and strlib.c.
  • The definition of ERROR_INFORMATION in soc_rtl.h has been changed to contain the name of the error variable. Usages of this macro in pol_sel.c, pol_unx.c and soc_rtl.c have been adjusted.
  • The performance of filGets for large files has been improved by 2% (measured with gcc and Valgrind).
  • In various Seed7 libraries (*.s7i) parameter declarations without parameter name (which use the keyword 'param') have been changed to parameter declarations with parameter name.

New in Seed7 05.20150614 (Mar 1, 2016)

  • The exponentiation operator for float values has been improved to work correct, when the base is negative zero, one or NaN (not a number).
  • The chapter describing float exponentiation in the manual has been improved.
  • The parse operator for integers has been improved to recognize, when there is no digit after the sign.
  • The makefile mk_msvc.mak has been improved to work without calling vcvars32 before.
  • The function isPositiveZero has been added to float.s7i.
  • Checks for the exponentiation with integer and float exponent have been added to chkflt.sd7.
  • Checks for the parse operator have been added to chkbig.sd7 and chkint.sd7.
  • Checks for the operators div, rem, mdiv and mod have been added to chkint.sd7.
  • Documentation comments have been added to float.s7i, cc_conf.s7i, fltlib.c and flt_rtl.c.
  • The configuration values NAN_COMPARISON_OKAY, POW_FUNCTION_OKAY, HAS_EXP2, HAS_EXP10, INT_MIN, INT_MAX and MAX_INTEGER_IN_FLOATTYPE have been added to cc_conf.s7i
  • The function intParse in int_rtl.c has been improved to recognize when there is no digit after the sign.
  • Calls of logFunction and logError have been added to analyze.c, arr_rtl.c, cmd_rtl.c, flt_rtl.c infile.c, numlit.c, numutl.c
  • The function defineTempVariable has been added to comp/expr_util.s7i.
  • The functions process_const_flt_ipow and process_const_flt_pow have been added to comp/flt_act.s7i.
  • The function process_const_int_mdiv in comp/int_act.s7i has been improved.
  • The function bigIntToDouble in numutl.c has been improved to use a right shift instead of a division by two.
  • In numutl.c and numutl.h the prototypes of the functions getDecimalInt, getDecimalBigInt, getDecimalBigRational and getDecimalFloat have been changed to use ustriType instead of void *.
  • The function getDecimalInt in numutl.c has been improved to do the conversion without calling intParse.
  • The macros logFunctionX and logErrorX have been added to common.h. This allows the activation of selected logging functions by adding X.
  • In str_rtl.c macro definitions for strelem_memcmp and search_strelem have been added. The macros are defined, when the functions wmemcmp respectively wmemchr are available and when they work with 32-bit data elements.
  • The macros 'likely' and 'unlikely' have been added to functions in striutl.c.
  • The files sql_util.c and sql_util.h have been renamed to numutl.c respectively numutl.h
  • The program chkccomp.c has been improved to write definitions of CAST_INT_TO_FLOAT_OKAY, HAS_EXP2, HAS_EXP10, NAN_COMPARISON_OKAY, FLOAT_ZERO_TIMES_INFINITE_OKAY, NAN_MULTIPLICATION_OKAY, NAN_DIVISION_OKAY, POWER_UNDERFLOW_WITH_SIGN, POWER_OF_ZERO_OKAY, POWER_OF_ONE_OKAY, POWER_OF_NAN_OKAY, PRINTS_NEGATIVE_ZERO, MAX_INTEGER_IN_FLOAT, MAX_INTEGER_IN_DOUBLE, HAS_WMEMCMP, HAS_WMEMCHR and HAS_WMEMSET.
  • Definitions of C_COMPILER_SCRIPT and GET_CC_VERSION_INFO_OPTIONS have been added to mk_msvc.mak. This definitions are used by the program setpaths.c to write definitions of the macros C_COMPILER and GET_CC_VERSION_INFO to version.h

New in Seed7 05.20150601 (Mar 1, 2016)

  • Interpreter and compiler have been improved to work correctly, when the function body (the part between 'begin' and 'end') consists of one symbol (e.g.: begin test end; ).
  • The parse operator for float values has been improved to work like the corresponding function that reads literals in a Seed7 program.
  • The parse operator for float values has been changed to forbid hex literals (that the underlying C function might allow).
  • In cli_cmds.s7i the copy and move commands have been fixed to work correctly, when the target file is specified.
  • Checks for division by zero (with div, mdiv, mod and rem) have been added to chkbig.sd7 and chkint.sd7.
  • Checks for log2 and log10 with negative argument have been added to chkbig.sd7 and chkint.sd7.
  • Checks if RANGE_ERROR is raised by the operators parse, digits, and sci have been added to chkflt.sd7
  • Checks for the sci operator have been added to chkflt.sd7.
  • Checks for factorial with negative numbers have been added to chkint.sd7.
  • Checks if RANGE_ERROR is raised by the parse operator have been added to chkint.sd7
  • In chkbig.sd7 the functions chkGrow, chkShrink and chkMultCopy have been renamed to chkAddAssign, chkSubtractAssign and chkMultAssign respectively.
  • The function defineTempVariable has been added to lib/comp/expr_util.s7i and used in several compiler files.
  • Changes to avoid signed unsigned mismatches in comparisons have been done in actIConv (act_comp.c), act_iconv (actlib.c) and bigParseBased2To36 (big_rtl.c)
  • Explicit casts to void (document that a function result is ignored) have been added to chrCLitToBuffer (chr_rtl.c) and bigLog10 (big_rtl.c).
  • The functions getEnvironment and freeEnvironment have been added to cmd_win.c.
  • The file con_emc.c has been added. This file contains a (dummy) driver for emcc (JavaScript) console access.
  • The file stat_win.c has been added. This file defines the functions wstati64() and fstati64().
  • The program chkccomp.c has been improved to write definitions of os_isnan, os_isinf, DOUBLE_MIN_EXP10, MIN_PRINTED_EXPONENT_DIGITS, MAX_PRINTED_EXPONENT_DIGITS, STRTOD_ACCEPTS_HEX_NUMBERS, ATOF_ACCEPTS_HEX_NUMBERS, STRTOD_ACCEPTS_DENORMAL_NUMBERS, ATOF_ACCEPTS_DENORMAL_NUMBERS, HAS_SYMBOLIC_LINKS and HAS_READLINK.
  • The config value ISNAN_WITH_UNDERLINE has been removed. Instead the macro os_isnan has been defined.
  • The macro HAS_SYMLINKS has been renamed to HAS_SYMBOLIC_LINKS.
  • In match.c the function match_symbol() has been added and used in match_object().
  • The function dllSym has been renamed to dllFunc. The function dllFunc returns a function pointer instead of a void pointer. This silences warnings issued by some C compilers. The sql_*.c drivers have been changed to use dllFunc.
  • Calls of logError have been added or improved in act_comp.c, arr_rtl.c, big_gmp.c, big_rtl.c, bst_rtl.c, cmd_rtl.c, cmd_win.c, dir_rtl.c, fil_rtl.c, fil_unx.c, fil_win.c, flt_rtl.c, hsh_rtl.c, intlib.c, pcs_unx.c, set_rtl.c and stat_win.c.
  • Calls of logFunction have been added or improved in arr_rtl.c, big_rtl.c, chr_rtl.c, cmd_rtl.c, dir_rtl.c, fil_rtl.c, fil_unx.c, fil_win.c, flt_rtl.c, gkb_win.c, int_rtl.c, s7.c, set_rtl.c, stat_win.c, tim_rtl.c

New in Seed7 05.20150517 (May 19, 2015)

  • Changelog:
  • Error messages in cli_cmds.s7i have been improved.
  • The function getHttp with a httpLocation parameter has been added to gethttp.s7i.
  • The structure httpRequest in httpserv.s7i has been improved to contain a field for the header.
  • Documentation comments have been added to the functions getAttrValue, getAttributes, getSubNodes and getContent in xmldom.s7i.
  • The function readXml with a string parameter has been added to xmldom.s7i.
  • The comanche webserver has been improved to respond with 405 (Method Not Allowed), when the request method is unknown.
  • The check for phaser energy in startrek.sd7 has been improved.
  • The function fltSci in flt_rtl.c has been improved to check for PRINTF_FMT_E_MAXIMUM_FLOAT_PRECISION.
  • Declarations of sqlite3_db_handle() and sqlite3_errmsg() have been added to db_lite.h and sql_lite.c.
  • The functions assertCompAndLnk and assertCompAndLnkWithOptions have been added to chkccomp.c.
  • The function numericProperties in chkccomp.c has been improved to determine more values from test programs.
  • The makefiles have been changed to define the linker options for libraries before chkccomp is executed.
  • The macro safe_fileno has been added to os_decls.h. This macro is used in logging functions to avoid a segmentation violation, when a FILE is NULL.
  • Calls of logFunction and logError have been added to big_gmp.c, big_rtl.c, drw_rtl.c, drw_win.c, drw_x11.c, fil_rtl.c, flt_rtl.c, gkb_win.c, gkb_x11.c, int_rtl.c, prg_comp.c, str_rtl.c and ut8_rtl.c.

New in Seed7 05.20150503 (May 4, 2015)

  • The example program cat.sd7 has been added. The program concatenates and prints files. Thanks go to Brian Callahan for providing it.
  • The makefile mk_emccw.mak has been added. This makefile supports compiling with the emcc C compiler from Emscripten. The support of Emscripten is experimental (see also src/read_me.txt).
  • Documentation comments have been improved in osfiles.s7i, utf8.s7i, cmd_rtl.c and ut8_rtl.c.
  • Various changes have been done in chkccomp.c. Many configuration settings are now always defined and have a value of 0 or 1. The corresponding #ifdef directives in the C source files have been changed to #if directives.
  • The library comp/int_act.s7i has been changed to use only ccConf.CHECK_INT_REM_BY_ZERO for the operators 'rem' and 'mod'.
  • In cmd_rtl.c the function cmdFileType has been changed to return FILE_SYMLINK, when the chain of symbolic links is too long.
  • In fil_rtl.c the functions seekFileLength(), offsetTell() and offsetSeek() have been improved to fail for terminal devices such as stdin. Under OpenBSD fseek() and ftell() succeeded in this case.
  • In drw_x11.c the functions drwPut() and drwSetTransparentColor() have been changed to consider a pixmap with a window of 0 as empty.
  • Calls of logFunction and logError have been added to fil_rtl.c, soc_rtl.c, str_rtl.c, tim_unx.c and ut8_rtl.c.

New in Seed7 05.20150419 (Apr 20, 2015)

  • Changelog:
  • The library httpserv.s7i, which supports HTTP server HTTP requests, has been added.
  • The comanche webserver has been changed to use the library httpserv.s7i.
  • The example program which.sd7 has been added. This program locates in which directory a command is found.
  • In shell.s7i the modes used for popen and popen8 have been changed. Now a pipe can be opened with the binary modes "r" (read) and "w" (write), or with the text modes "rt" (read) and "wt" (write).
  • Variants of the functions popen and popen8, which use an array of parameters, have been added to shell.s7i.
  • In tls.s7i the function gets has been changed to return as soon as data is available. This behavior corresponds to the gets function in socket.s7i.
  • Checks for the radix operator have been added to chkbig.sd7 and chkint.sd7.
  • Interpreter and compiler have been improved such that the files STD_IN, STD_OUT and STD_ERR are in binary mode.
  • The function doRemove in chkccomp.c has been improved to check for the presence of the file before it is removed.
  • The function checkPopen has been been added to chkccomp.c.
  • The function cmdShellEscape in cmd_rtl.c has been improved. Now all characters except '\0;', '\n' and '\r' can be escaped ('\r' can be escaped under Linux/Unix/BSD).
  • Now there are two versions of cmdShellEscape and the define variable ESCAPE_SHELL_COMMANDS decides which one is used.
  • The function filPopen has been changed, to open a pipe in binary or text mode.
  • In fil_rtl.c the function read_and_alloc_stri has been changed to read the data into a list of buffers. Afterwards the string is allocated, the data is copied and the buffer list is freed. This improves the perfomance, when the file is a pipe.
  • In fil_rtl.c the function doGetsFromTerminal has been changed to check for a negative length.
  • In soc_rtl.c the function read_and_alloc_stri has been added. This function reads the data into a list of buffers. Afterwards the string is allocated, the data is copied and the buffer list is freed.
  • In soc_rtl.c the function socGets has been improved to use read_and_alloc_stri, when the requested length is larger than 1 MB.
  • In soc_rtl.c the function socWrite has been improved to call send() again, when not all data has been written.
  • In prclib.c the functions prc_block_catch_all and prc_block_otherwise have been improved to free the fail_stack. This way the call stack that is written, when an exception terminates the program, is always correct.
  • The function escape_command in striutl.c has been improved.
  • Verbose exceptions have been added to big_rtl.c, fil_rtl.c, pol_sel.c, pol_unx.c and soc_rtl.c.
  • The logging of C functions in big_rtl.c, cmd_rtl.c, fil_rtl.c, hsh_rtl.c, int_rtl.c, pcs_rtl.c, pcs_unx.c, pcs_win.c, prg_comp.c, soc_rtl.c, str_rtl.c, tim_dos.c, tim_rtl.c, tim_unx.c and tim_win.c has been changed to use the macro logFunction.
  • The definition of the macro logError has been removed from various C files. The new definition of logError is in common.h.
  • Trace output has been added to fil_rtl.c.
  • Documentation comments have been improved in process.s7i shell.s7i, socket.s7i, big_rtl.c, fillib.c... read more

New in Seed7 05.20150322 (Mar 23, 2015)

  • Changelog:
  • The program chkchr.sd7 has been added. This program checks the correctness of the functions isLetter and width. Thanks go to Arkady Kuleshov for providing chkchr.sd7.
  • Interpreter and compiler have been improved to allow Unicode names. This functionality is inspired by patches from Arkady Kuleshov. Unicode names are switch off by default. They must be activated with the pragma: $ names unicode;
  • The library smtp.s7i, with support for SMTP (simple mail transfer protocol), has been added.
  • Interpreter and compiler have been changed to write an error message, when a deprecated string escape sequence (e.g.: "\7\") is used instead of a new escape sequence (e.g.: "\7;").
  • The function getHttpLocation in gethttp.s7i has been improved to handle IPv6 addresses correctly.
  • In cli_cmds.s7i error messages have been added to doCopyCmd and doMoveCmd.
  • Documentation comments have been added or improved in console.s7i, ftp.s7i and cli_cmds.s7i.
  • Checks for the function bigInteger have been added to chkbig.sd7.
  • Checks for the integer for-loop have been added to chkprc.sd7.
  • In big_rtl.c the functions bigParseBasedPow2 and bigParseBased2To36 have been improved to raise RANGE_ERROR when a digit is too big.
  • The program chkccomp.c has been changed to use test programs for various settings. This has been done to allow that chkccomp.c can be compiled with any compiler (not just the one that is to be tested).
  • The function write_position_info has been added to runerr.c.
  • In runerr.c the function write_call_stack has been improved to catch the signal SIGSEGV.
  • The function scan_symbol_utf8 has been added to scanner.c.
  • The functions prot_cstri8 and prot_string have been added to traceutl.c.
  • The function escape_sequence in literal.c has been changed to write an error when a deprecated string escape sequence is used.
  • The function utf8_char in literal.c has been changed to save the UTF-8 sequence.
  • The function basedValue in numlit.c has been changed to write the error ILLEGALBASEDDIGIT with the correct digit.
  • In prclib.c the functions prc_for_downto, prc_for_downto_step, prc_for_to and prc_for_to_step have been changed such that the loop variable has a defined value after the loop. After the for-loop the loop variable must be beyond the upper bound (or below the lower bound for for-downto-loops).
  • In doany.c the functions do_flush, do_wrnl and do_wrstri have been changed to allow that outfile is from a different program.

New in Seed7 05.20150308 (Mar 9, 2015)

  • CHANGELOG:
  • The compile time error messages have been improved. Now Unicode characters in the error line are displayed correctly. Before they have been displayed as question marks (?). When the error line is written to a console the encoding of the operating system is used. When stdout has been redirected to a file the error line is encoded with UTF-8. Thanks go to Arkady Kuleshov for triggering this improvement. The patch proposed by Arkady is based on stdout and UTF-8. The actual implementation uses a different approach via the console driver con_drv.h. The console driver uses UTF-16 under windows (unless stdout has been redirected) and UTF-8 under Linux/Unix/BSD.
  • The function getBinary has been added to bin64.s7i. This function returns 64 bits from a bitset starting with a given bit number.
  • The compiler has been changed to use the function getBinary to generate bitset literals.
  • Interpreter and compiler have been improved to support the actions BIN_GET_BINARY_FROM_SET, PRC_FOR_DOWNTO_STEP and PRC_FOR_TO_STEP.
  • The compiler function AppendWithDiagnostic has been renamed to appendWithDiagnostic.
  • The function appendWithDiagnostic in comp/debug.s7i has been improved to add #line directives only when they are missing.
  • The function defineTempConstant has been added to expr_util.s7i.
  • The functions process_const_bin_radix and process_bin_radix in comp/bin_act.s7i have been improved to use uintRadix() and uintRadixPow2() for the actions BIN_radix and BIN_RADIX.
  • The generation of for-loops in comp/prc_act.s7i has been improved.
  • A definition of an integer for-loop with step has been added to forloop.s7i. Before integer for-loops with step were defined with the template FOR_STEP_DECLS.
  • The functions prc_block, prc_block_catch_all, prc_block_otherwise, prc_repeat and prc_while in prclib.c have been improved to check for fail_flag with the macro unlikely().
  • The functions check_for_int_to and check_for_int_downto in chkprc.sd7 have been improved.
  • The program err.sd7 has been improved.
  • The program chkccomp.c has been changed to write the version information to stdout when no file name has been provided as argument.
  • A definition of the macro chrStrMacro has been added to chr_rtl.h.
  • The function utf8_char in literal.c has been changed to call next_character() before reporting the errors CHAR_ILLEGAL, OVERLONG_UTF8_ENCODING, UTF16_SURROGATE_CHAR_FOUND and CHAR_NOT_UNICODE.
  • The functions read_ustri8_line, ustri8_buffer_to_stri, calculate_output_length, print_stri and read_and_print_line have been added to error.c

New in Seed7 05.20150201 (Feb 2, 2015)

  • Changelog:
  • The option -p of the interpreter (Specify a protocol file, for trace output) has been documented in FAQ, s7.1 and in the help function of the interpreter.
  • The behavior of a Seed7 program, when it receives a signal, has changed. Now a program is terminated, when it receives a signal. The old behavior, that asks for RETURN or '*', is used when interpreter or compiler are called with the option -ts.
  • The option -ts of interpreter and compiler (Trace signals) has been documented in FAQ, s7.1, s7c.1 and in the help functions of the programs.
  • Documentation comments in integer.s7i, bigint.s7i and char.s7i have been improved.
  • The function bitsetElemAsHex (in comp/set_act.s7i) has been improved by a factor of 7 (measured with gcc and Valgrind).
  • The operator sci has been improved in integer.s7i and bigint.s7i.
  • The function check_sci, which checks the sci operator has been added to chkint.sd7.
  • The function check_str, which checks the str function has been added to chkset.sd7.
  • The function doRemoveCmd in cli_cmds.s7i has been improved to write a message when the operation is not permitted.
  • The compiler has been improved to generate better code for the action STR_MULT.
  • The function check_string_mult, which checks string multiplications, has been added to chkstr.sd7.
  • The function bitsetNonZero has been added to set_rtl.c. This function uses loop unrolling inspired by Duff's device.
  • The function setNext (in set_rtl.c) has been changed to call bitsetNonZero. This improves the speed of setNext by a factor of 2 (measured with gcc and Valgrind).
  • The function strMult in str_rtl.c has been improved to use a binary method for string multiplication. This improves the speed of setMult by a factor of 2 (measured with gcc and Valgrind).
  • The function drwEmpty has been added to drw_x11.c drw_win.c and drw_dos.c.

New in Seed7 05.20150118 (Jan 19, 2015)

  • The performance of the function bytes2Int in bytedata.s7i has been improved by 10% (measured with gcc and valgrind). An intermediate function has been removed and a boolean parameter has been omitted from the underlying C function .
  • The function check_string_concat, which contains checks for string concatenation, has been added to chkstr.sd7.
  • Improvements have been done in gethttp.s7i and tls.s7i to avoid blocking and exceptions, when a socket is closed or unexpected data is read.
  • Several optimizations in the compiler (s7c) have been done:
  • The function optimize_str_cat has been added to comp/str_act.s7i. This function optimizes sequences of string concatenations.
  • The flag prefer_result_expr has been added to the struct expr_type in comp/expr.s7i. With this flag it can be requested that a parameter is preferred as result_expr (the value is allocated at the heap).
  • The function process_int_str has been added to int_act.s7i. This function is used for INT_STR and for the radix operator when the base is 10.
  • The program chk_all.sd7 has been changed to ignore the exception FILE_ERROR, when it is raised by some calls of removeFile.
  • In int_rtl.c the functions intBytesBe2Int and intBytesLe2Int have been changed to convert only signed values (in twos-complement representation). The parameter isSigned has been removed.
  • The functions intBytesBe2UInt and intBytesLe2UInt have been added to int_rtl.c. This functions convert unsigned values.
  • The function write_place in error.c has been fixed to write the correct file name and line. This error has been introduced in version 2014-09-07, when the function write_place has been added.
  • A definition and calls of the macro logError have been added to fil_rtl.c and soc_rtl.c.
  • A version of the function alloc has been added to progs.s7i. This version allocates a string object.
  • The functions prot_params and prot_name in traceutl.c have been improved to write syntax with keywords at the beginning and at the end correctly.
  • In ref_data.c the functions refAlloc, refArrMaxIdx, refArrMinIdx, refArrToList, refBody, refCategory, refFile, refHshDataToList, refHshKeysToList, refIsVar, refItfToSct, refLine, refLocalConsts, refLocalVars, refNum, refParams, refResini, refResult, refSctToList, refStr, refType, actValue, bigValue, blnValue, bstValue, chrValue, drwValue, filValue, fltValue, intValue, pcsValue, polValue, prgValue, refValue, rflValue, setValue, strValue and typValue have been changed to use const parameters.
  • The actions INT_BYTES_BE and INT_BYTES_LE have been replaced by INT_BYTES_BE_SIGNED, INT_BYTES_BE_UNSIGNED, INT_BYTES_LE_SIGNED and INT_BYTES_LE_UNSIGNED.

New in Seed7 05.20141223 (Dec 29, 2014)

  • The chapter about primitive actions in the manual has been improved.
  • The compiler optimization of bigInteger divisions and multiplications by -1 has been improved.
  • Tests of bigInteger divisions and multiplications have been added to chkbig.sd7.
  • The functions fltDgts and fltSci have been improved to allow a precision greater than 1000.
  • Tests of the operators digits and sci with large precision values have been added to chkflt.sd7.
  • In drw_x11.c the functions drwHeight and drwWidth have been improved to avoid a call of XGetGeometry, when the window is a pixmap. This significantly improves the writing with Seed7 fonts under Mac OS X.
  • The compiler has been improved to limit the length of float literals to 100 characters. The length of a float literal accepted by the cl C compiler from msvc is limited.
  • The function doubleToCharBuffer in flt_rtl.c has been improved to work correctly for numbers with big and small exponents.
  • Tests of float to string conversions have been added to chkflt.sd7. The tested float values have exponents from the allowed range.
  • The function bigAddAssignSignedDigit (former bigGrowSignedDigit) in big_rtl.c has been changed to mask the delta value with BIGDIGIT_MASK.
  • The functions numericSizes and deteminePostgresDefines in chkccomp.c have been improved. Now the macros INT32_SUFFIX, UINT32_SUFFIX, INT32TYPE_LITERAL_SUFFIX, INT32TYPE_FORMAT, INT64_SUFFIX, UINT64_SUFFIX, INT64TYPE_LITERAL_SUFFIX and INT64TYPE_FORMAT are written by chkccomp.c instead of being defined in common.h.
  • The function findPgTypeInclude has been added to chkccomp.c.
  • The check for the function __builtin_expect in chkccomp.c has been improved.
  • The actions BIG_GROW, BIG_SHRINK, FLT_GROW, FLT_SHRINK, INT_GROW and INT_SHRINK have been renamed to BIG_ADD_ASSIGN, BIG_SBTR_ASSIGN, FLT_ADD_ASSIGN, FLT_SBTR_ASSIGN, INT_ADD_ASSIGN and INT_SBTR_ASSIGN respectively.
  • In big_rtl.c and big_gmp.c the functions bigGrowSignedDigit, bigGrow and bigShrink have been renamed to bigAddAssignSignedDigit, bigAddAssign and bigSbtrAssign respectively.
  • A check for DEFAULT_DECIMAL_PRECISION in sql_odbc.c has been corrected.

New in Seed7 05.20141210 (Dec 12, 2014)

  • The database drivers sql_lite.c, sql_my.c, sql_oci.c, sql_odbc.c and sql_post.c have been improved to select a shared library / DLL from a list of candidates.
  • The program chkccomp.c has been improved to configure database drivers with a list of shared libraries / DLLs.
  • The makefiles mk_bcc32.mak, mk_bccv5.mak, mk_msvc.mak, mk_msys.mak, k_mingc.mak, mk_mingw.mak and mk_nmake.mak have been improved to write definitions of the C macros MYSQL_DLL, SQLITE_DLL and POSTGRESQL_DLL to the file chkccomp.h.
  • The chapters about integer, rational and exceptions in the manual have been improved.
  • In bigint.s7i the performance of the binomial coefficient operator (infix operator symbol: ! ) has been improved by 17% (measured with gcc and valgrind).
  • The optimization of constant expessions in the compiler has been improved.
  • The program esc2qte.c has been added. This program searches for backslash escaped spaces and quotes the string instead. It is used by mk_nmake.mak to process the file depend.
  • Documentation comments in integer.s7i have been improved.
  • The recognition of integer formats in chkccomp.c has been improved (the test programs now include ).
  • The makefiles mk_msys.mak and mk_nmake.mak have been improved to use wrdepend.exe to determine the dependencies.
  • The program wrdepend.c has been changed to include config.h (this way the macro MAP_ABSOLUTE_PATH_TO_DRIVE_LETTERS is available).
  • A cast has been added to sudo.c.

New in Seed7 05.20141116 (Nov 20, 2014)

  • Changes:
  • The type process has been added to the library process.s7i. The type process is used to manage child processes.
  • The functions compare, hashCode, str, exitValue isAlive, startProcess, kill and waitFor have been added to process.s7i.
  • Support for the actions CMD_PIPE2, CMD_PTY and CMD_START_PROCESS has been removed from interpreter and compiler.
  • Support for the actions PCS_CMP, PCS_CPY, PCS_EQ, PCS_EXIT_VALUE, PCS_HASHCODE, PCS_IS_ALIVE, PCS_KILL, PCS_NE, PCS_PIPE, PCS_PTY, PCS_START, PCS_STR, PCS_VALUE and PCS_WAIT_FOR has been added to interpreter and compiler.
  • The files pcs_rtl.c, pcs_rtl.h, pcs_unx.c, pcs_win.c, pcs_drv.h, pcslib.c, pcslib.h and pcs_act.s7i have been added.
  • The functions freeArgVector, genArgVector have been moved from cmd_unx.c to pcs_unx.c.
  • The function prepareCommandLine has been moved from cmd_win.c to pcs_win.c.
  • The makefiles have been improved to consider the files necessary for process support.

New in Seed7 05.20141019 (Oct 22, 2014)

  • The compiler s7c has been improved to process the semicolon operator with reduced stack usage. Thanks go to Pietro Cerutti for pointing out problems with the available stack size under FreeBSD.
  • In drw_x11.c the function redraw has been improved to ignore expose events when backing store is active. Thanks go to Brian Callahan for reporting problems with activated backing store under OpenBSD.
  • The library makedata.s7i has been improved. Now conditional makefile parts with ifdef and ifndef are allowed. Now it is possible to use the ?= operator to assign a value to a variable. Now the value of a variable is taken from the environment, when it has not been defined in the makefile.
  • The function setupStack has been moved from cmd_rtl.c to heaputl.c.
  • The self extracting Seed7 installer for windows has been improved to allow downloading the latest Seed7 release.
  • Tabs in various files have been replaced with spaces.

New in Seed7 05.20141005 (Oct 6, 2014)

  • The example program sql7.sd7 has been improved to write help information, when it is called with the option -? .
  • The configuration program chkccomp.c has been improved to accept the #define macros MYSQL_INCLUDE_OPTIONS, SQLITE_INCLUDE_OPTIONS, POSTGRESQL_INCLUDE_OPTIONS, ODBC_INCLUDE_OPTIONS, OCI_INCLUDE_OPTIONS, MYSQL_LIBRARY_PATH, SQLITE_LIBRARY_PATH, POSTGRESQL_LIBRARY_PATH, ODBC_LIBRARY_PATH and OCI_LIBRARY_PATH.
  • The makefile mk_freebsd.mk has been improved to allow database connections under FreeBSD.
  • The makefils mk_mingw.mak, mk_msvc.mak, mk_bcc32.mak and mk_bccv5.mak have been improved to support the SQLite database.
  • The database driver sql_ite.c has been improved such that it can also work with a DLL that is loaded at runtime.
  • Tracing statements have been added to drw_x11.c.

New in Seed7 05.20140921 (Sep 22, 2014)

  • Access to MySql/MariaDb, SQLLite, PostgreSQL, Oracle and ODBC databases has been added.
  • The library sql_base.s7i has been added. This library provides functions to connect to a database, to prepare statements, to bind variables to prepared statements, to execute prepared statements, to fetch data from the database and to get individual columns from fetched data.
  • A paragraph about the compilation of Seed7 with database connections has been added to the FAQ.
  • The example program sql7.sd7 has been added. This program connects with a database, reads SQL commands and sends them to the database.
  • The example program chkdb.sd7 has been added. This program checks SQL statements with several databases. The database login data in chkdb.sd7 must be adjusted to allow that opening the databases succeeds.
  • The library ftp.s7i and the program ftp7.sd7 have been improved to accept connection strings of the form user:password@hostName .
  • Interpreter and compiler have been improved to support databases.
  • The compiler now adds parentheses arround comma expressions when they are used as index. This changes have been done in the files arr_act.s7i, bst_act.s7i and str_act.s7i.
  • Database drivers consisting of the files dll_drv.h, dll_unx.c, dll_win.c, sql_drv.h, sql_ite.c, sql_my.c, sql_oci.c, sql_odbc.c, sql_post.c, sql_rtl.c, sql_rtl.h, sql_util.c, sql_util.h, sqllib.c and sqllib.h have been added.
  • The program wrdepend.c has been added. This program is used to write C header dependencies to the file depend. It calls the C compiler with -I options. The -I options come from the macro INCLUDE_OPTIONS, which is defined in the file version.h.
  • Database driver files have been added to makefiles.

New in Seed7 05.20140907 (Sep 9, 2014)

  • The function setSearchPath has been added to the library process.s7i.
  • The compiler has been improved to write an error message, when the sets of a case-statement overlap. Until now this situation was only recognized by the C compiler.
  • The interpreter has been improved to raise an exception, when the current value of a case-statement is element of two sets.
  • There have been changes in the libraries makedata.s7i and make.s7i.
  • The macro expansion in makedata.s7i has been changed. Now all macro expansions (except the expansions of internal macros) are done with the function applyMacros.
  • In makedata.s7i the function applyMacros has been improved to process the makefile macro functions wildcard, error and warning.
  • The functions evalFunction and getMacro, that where used to do macro expansion when the makefile is read, have been removed.
  • The code to read the definition of recursively expanded variables has been changed to do no macro expansion. This macros are expanded when they are used.
  • The library make.s7i has been improved to read the parameters for the commands rm, cp, and mv as Unix shell parameters (with the function getUnixCommandParameter).
  • The library make.s7i has been improved to read the parameters for the commands del, copy, xcopy and move as Dos/Windows batch parameters (with the function getDosCommandParameter).
  • Interpreter and compiler have been improved to support the action CMD_SET_SEARCH_PATH.
  • The batch file bin/call_gcc.bat has been changed to work correctly, when it is called from any directory.
  • Writing error messages in error.c has been changed to use prot_... functions instead of printf.

New in Seed7 05.20140817 (Aug 18, 2014)

  • The chapter about files in the manual has been improved.
  • Variants of the for-each-loop with an until condition have been added to array.s7i.
  • The parse operator for characters has been improved to accept only strings with a length of 1.
  • The function trimValue has been introduced. This function trims a string such that it can be converted to a specified type.
  • The exception handlers for RANGE_ERROR have been removed from the functions read and readln in enable_input.s7i. The functions read and readln now raise range RANGE_ERROR when the conversion to the target type fails.
  • Occurances of io_ok, io_error, io_empty and io_filled have been removed from the libraries. This undocumented feature was not used for years. The function succeeds and the functions read and readln with default value are better suited for error checking, when data is read.
  • The exception handlers in interpreter and compiler have been improved to allow an otherwise part.
  • The function succeeds has been introduced. This function executes a statement and returns TRUE when no exception occurs.
  • The example programs nicoma.sd7 and savehd7.sd7 have been improved to use the new function succeeds.
  • The parse operator for float has been changed to raise RANGE_ERROR when leading whitespace is found.
  • The library make.s7i has been improved to accept the commands erase, xcopy, mv, move and rem.
  • The library makedata.s7i has been improved to accept the macro functions subst and patsubst.
  • The reading of rules in makedata.s7i has been improved to read commands without macro substitution. The macros in commands are substituted just before the commands are executed.
  • The make functions in make.s7i have been changed to raise FILE_ERROR when a command fails.
  • The function applyMacros in makedata.s7i has been improved to accept macro functions and the shorthands of patsubst.
  • The function replaceSuffixes in makedata.s7i has been improved to accept pattern substitution with the % character.
  • In the library make.s7i the logging has been removed from the functions doRm, doCp, doPwd, doEcho, doCd, doMake, doOneCommand, doCommands and processCommand.
  • The program chkflt.sd7 has been adjusted to work with the strict parse operator for float.
  • Interpreter and compiler have been improved to support the actions PRC_BLOCK_CATCH_ALL and PRC_BLOCK_OTHERWISE.
  • The program sudo.c has been improved to work without upper limit for the parameter length.
  • The functions checkIfOutsideRange and negate have been added to int_act.s7i.

New in Seed7 05.20140803 (Aug 4, 2014)

  • The runtime of the function intPowOvfChk in int_rtl.c has been reduced to 57% (measured with gcc and valgrind).
  • The generation of code in the compiler for the action INT_POW has been improved. When the base is a negative power of two the exponentiation is done with a shift instead of a call of intPow (respectively intPowOvfChk).
  • The overflow checking for INT_POW in the compiler has been improved. When base or exponent is known the overflow checking is done with inline code and intPow is called instead of intPowOvfChk.
  • Documentation comments have been added to bitsetof.s7i
  • Tests for ** have been added to chkint.sd7 and chkovf.st7
  • The tests for * and *:= in chkovf.st7 have been reorganized.
  • An interrupt_flag has been introduced in the interpreter. This flag is used for exception handling and for signal handling. Exceptions set interrupt_flag and fail_flag (with the macro set_fail_flag). Signals set only the interrupt_flag (file sigutl.c). The interrupt_flag is handled in exec_action (file exec.c).
  • The functions signal_name, handle_signals, handle_segv_signal, handle_term_signal and activate_signal_handlers in sigutl.c have been improved.
  • The functions continue_question, write_curr_position and show_signal in runerr.c have been improved.
  • The functions handle_int_signal, readChar, doGetcFromTerminal, doGetsFromTerminal, doLineRead, doLineReadFromTerminal, doWordRead, doWordReadFromTerminal, filGetcChkCtrlC, filGetsChkCtrlC, filHasNextChkCtrlC, filLineReadChkCtrlC and filWordReadChkCtrlC have been added to fil_rtl.c. This functions support reading from a terminal with a check for ctrl-c. This functions are used by the interpreter (file intlib.c).
  • Tracing has been added to functions in int_rtl.c.
  • Configuration defines for CTRL_C_SENDS_EOF, SIGNAL_HANDLER_CAN_DO_IO and INT64TYPE_NO_SUFFIX_BUT_CAST have been added to makefiles.

New in Seed7 05.20140706 (Jul 7, 2014)

  • The interpreter has been improved to recognize integer overflow.
  • Now the exception NUMERIC_ERROR is raised, when a program triggers an integer overflow. The checks for overflow are done in software, but the overhead is small. With overflow checks the interpreter needs 0.5% (zero point five percent) more run-time to execute the program chkint.sd7 (verified with gcc and valgrind).
  • A chapter about the Seed7 Structured Syntax Description (S7SSD) has been added to the manual.
  • The for-until-loops in bitset.s7i and bitsetof.s7i have been improved such that the for-variable has the correct value, when it is used in the until-condition.
  • The function replaceN has been added to string.s7i. This function does replacements until no occurance of the target string is left.
  • This function is used by toStdPath to replace multiple occurances of a character by one occurance (replace("/a///b////c", "//", "/") returns "/a/b/c").
  • The program calc.sd7 has been renamed to calc7.sd7.
  • The program calc7.sd7 has been changed to accept the commands 'quit' and 'exit'. This commands can be used to exit the program.
  • The possibility to leave the program with an empty input line has been removed.
  • The program calc7.sd7 has been improved to write the name of the exception, when it has been raised.
  • The compiler has been improved to allow the generation of overflow checking code. Overflow checking code can be generated for the operators +, -, **, +:= and -:= and the functions abs, succ, pred, incr and decr. Until the rest of the functions is implemented and enough tests have been added to chkint.sd7 the functionality is switched off.
  • The template FOR_UNTIL_DECLS has been added to forloop.s7i. This template defines for-loops with a condition.
  • The function abs has been moved from the library math.s7i to the library float.s7i.
  • Checks for addition, subtraction, multiplication, power and abs have been added to chkint.sd7.
  • In the compiler the statements to write the C prototypes have been moved from s7c.sd7 to functions in the files comp/xxx_act.s7i (xxx is the abbreviation for the corresponding primitive type).
  • The functions getReference getParameterAsReference have been added to comp/expr_util.s7i.
  • The function isit_bool from objutl.c has been replaced by the macro isit_bool (defined in objutl.h). This improves the speed of the interpreter.
  • The function set_card has been improved to call setCard, which computes the cardinality of a set much quicker.

New in Seed7 05.20140615 (Jun 17, 2014)

  • The makefile mk_freebsd.mk has been changed to work with the new version of chkccomp.c. Thanks go to Pietro Cerutti for pointing out the problem.
  • The self extracting Seed7 package for windows has been improved to use gcc version 4.8.1 instead of 4.5.0.
  • The new function removeTree, which removes a directory tree, has been introduced in osfiles.s7i. The function removeAnyFile, which has been used for the same purpose, is deprecated. Deprecated functions will be removed in a future version.
  • Checks for hash tables with character keys have been added to chkhsh.sd7.
  • The test program "chkcmd.sd7" has been added. This program checks functions that copy, move and remove files. Note that windows has race conditions when files are copied, moved and removed quickly in succession. This bug of windows cannot be fixed in a runtime library.
  • The function temp_name_in_dir has been added to striutl.c.
  • The typedef of socketType in common.h has been changed such that socketType is always int.
  • Functions in soc_rtl.c, pol_sel.c and pol_unx.c have been changed to use the type os_socketType.
  • Tracing statements in hsh_rtl.c, cmd_rtl.c, drw_win.c and drw_x11.c have been changed to use the FMT_ strings from common.h. This way the tracing is more portable.
  • Under Windows the functions cmdRemoveFile and cmdRemoveTree now rename a file before it is removed. When the renaming fails the directory is left intact. This avoids half removed directory trees under Windows, when a process has the current working directory somewhere in the directory that is to be removed. The renaming also lowers the probability of race conditions under Windows, but they still can happen.
  • The function checkMoveDirectory has been added to chkccomp.c.
  • The target make7 has been added to the makefiles. With 'make make7' an executable of the make7 program is generated and placed in seed7/bin.

New in Seed7 05.20140601 (Jun 3, 2014)

  • The compiler has been refactored. Code has been moved from s7c.sd7 to several compiler libraries. The compiler libraries are licensed with the GPL and can be found in seed7/lib/comp. The refactored compiler is the first compiler of the 3.0 series.
  • The chapter in the manual about the foreign function interface has been improved.
  • Checks for parse and str have been added to chkflt.sd7 and chkint.sd7.
  • In chkccomp.c code has been moved from main() to the new functions numericSizes and numericProperties.
  • Usages of the macro logError have been added to cmd_rtl.c and cmd_unx.c.
  • The stack size defined in mk_mingc.mak, mk_mingw.mak, mk_msys.mak and mk_nmake.mak has been changed from 4194304 to 8388608.
  • The function cstri_buf_to_stri has been added to striutl.c.
  • The generation of float literals in the compiler has been improved to avoid that precision is lost.
  • Interpreter and compiler have been improved to support the actions BLN_EQ and BLN_NE.

New in Seed7 05.20140518 (May 20, 2014)

  • Errors in con_wat.c and drw-dos.c have been fixed (thanks to "Rugxulo" for the help to fix them).
  • The function str in duration.s7i has been improved to work for negative durations.
  • The library tar.s7i has been improved to work with the old file format that does not use the magic value "ustar".
  • The function bigToInt16 has been added to big_rtl.c and big_gmp.c.
  • The macros with format strings in common.h have been renamed. Now the macros have shorter names (starting with FMT_ and F_). The macros define formats for various integer sizes. This formats are independend from the actual C compiler and C runtime library.
  • The function bigLog10 in big_rtl.c has been improved to work correctly when BIGDIGIT_SIZE is small.
  • The program chkccomp.c has been improved to define LOCALTIME_WORKS_SIGNED, when localtime can process negative times.
  • The program chkccomp.c has been improved to write the define directives to the file specified with the first parameter.
  • The function intParse in int_rtl.c has been improved to accept the most negative number.
  • The function timSetLocalTZ in tim_rtl.c has been changed to avoid raising an exception when LOCALTIME_WORKS_SIGNED is not defined and the time is before 1970-01-01. In this case the daylight saving time flag is set to FALSE.

New in Seed7 05.20140504 (May 6, 2014)

  • The answer concerning Unicode support in the FAQ has been improved.
  • The chapters in the manual that describe the types integer, bigInteger, rational, bigRational and float have been improved.
  • The function log10 has been added to the libraries integer.s7i and bigint.s7i. This function computes the truncated base 10 logarithm.
  • The operator sci has been added to the libraries integer.s7i, bigInteger.s7i, bigrat.s7i and rational.s7i. This operator converts a number to a string in scientific notation. Halfway cases are rounded away from zero.
  • The function round10 has been added to the libraries rational.s7i and bigrat.s7i. It rounds halfway cases away from zero.
  • The function str has been improved in the libraries rational.s7i and bigrat.s7i. Now the function converts to a string with a decimal representation (e.g.: "1.25"). When repeating decimals are recognizend they are enclosed in parentheses.
  • The operator digits has been improved in the libraries rational.s7i and bigrat.s7i. Now the operator rounds halfway cases away from zero.
  • Documentation comments have been improved in bigint.s7i, float.s7i, rational.s7i, bigrat.s7i, char.s7i, big_gmp.c and fltlib.c.
  • Definitions of the constants integer.first and integer.last have been added to integer.s7i.
  • In bigrat.s7i and rational.s7i the function reduce has been improved to accept Infinity and NaN.
  • The function strDateTime has been added to time.s7i.
  • A definition of INTTYPE_DECIMAL_SIZE has been added to s7c.sd7 and common.h.
  • The function bigGcd in big_rtl.c has been improved to make sure that the greatest common divisor is positive or zero.
  • Checks for log10, **, +:= and -:= have been added to chkbig.sd7.
  • The checks for log2 have been improved and checks for log10 have been added to chkint.sd7.
  • Checks for the function str have been added to chkflt.sd7.
  • The compiler has been improved to use the functions bigIPowSignedDigit and bigGrowSignedDigit to optimize the operators **, +:= and -:= for bigInteger operands.
  • The compiler has been improved to support the actions INT_LOG10 and BIG_LOG10.
  • The function isPureFunction in the compiler has been improved.
  • The functions bigGrowSignedDigit and bigLog10 have been added to big_rtl.c and big_gmp.c.
  • The program chkccomp.c has been improved to write definitions of the macros isinf, DOUBLE_DECIMAL_EXPONENT_DIGITS, FLOAT_STR_FORMAT, FLOAT_STR_LARGE_NUMBER, DOUBLE_STR_FORMAT, DOUBLE_STR_LARGE_NUMBER, FLOAT_MANTISSA_FACTOR, FLOAT_MANTISSA_SHIFT, DOUBLE_MANTISSA_FACTOR and DOUBLE_MANTISSA_SHIFT.
  • The functions fltDgts and fltSci in flt_rtl.c have been changed to raise RANGE_ERROR when the precision is negative.
  • The function fltStri in flt_rtl.c has been improved to write a reasonable number of fractional digits.
  • The functions getMantissaAndExponent, setMantissaAndExponent and doubleToCharBuffer have been added to flt_rtl.c.
  • The function intLog10 has been added to int_rtl.c.
  • The function stri_to_wstri has been renamed to stri_to_utf16.
  • The functions stri_to_wstri_buf and wstri_buf_to_stri have been added to striutl.c.

New in Seed7 05.20140420 (Apr 22, 2014)

  • The chapter in the manual about the foreign function interface has been improved.
  • A paragraph about regular expressions and lexical scanner functions has been added to the FAQ.
  • The handling of the actions CHR_CLIT and INT_STRI in the compiler has been improved. The string buffers for chrCLitToBuffer and intStrToBuffer use the correct alignment now.
  • In big_rtl.c the functions bigParseBasedPow2 and bigParseBased2To36 have been added and bigParseBased has been changed to call them. This improves the conversion of a string to a bigInteger, when the base is a power of two. Valgrind measurements of the function bigParseBased in chkbig.sd7 show a speed improvement with a factor of 239.
  • The macros memcpy_to_strelem and memset_to_strelem (defined in striutl.h) have been turned into functions (defined in striutl.c).
  • The unrolling in memcpy_to_strelem and memset_to_strelem has been changed from 8 times to 32 times. This improves the performance for big data amounts by 16% (Measured with valgrind and gcc).
  • Usages of the macros memcpy_to_strelem and memset_to_strelem in bst_rtl.c, fil_rtl.c, soc_rtl.c and str_rtl.c have been turned into usages of the corresponding functions.
  • Calls of cstri_expand, ustri_expand, cstri_expand2 and ustri_expand2 in analyze.c, chr_rtl.c, flt_rtl.c, infile.c, str_rtl.c and striutl.c have been turned into calls of memcpy_to_strelem.
  • The functions (macros) cstri_expand, ustri_expand, cstri_expand2 and ustri_expand2 have been removed from striutl.c and striutl.h.
  • The functions doCompileAndLink, compileAndLinkWithOptionsOk, compileAndLinkOk, appendToFile and detemineDatabaseDefines have been added to chkccomp.c. The function compilationOkay has been replaced by compileAndLinkOk.

New in Seed7 05.20140406 (Apr 11, 2014)

  • The chapters in the manual about primitive actions and the foreign function interface have been improved.
  • The names of the C types used in interpreter and runtime library have been refactored to use camel case.
  • The elements in the unions valueUnion (in data.h) and rtlValueUnion (in data_rtl.h and s7c.sd7) have been refactored to use names with camel case.
  • The library bigint.s7i has been changed to define the operators radix and RADIX with the actions BIG_radix and BIG_RADIX. This results in a significant performance improvement when large numbers are converted.
  • Interpreter and compiler have been improved to support the actions BIG_radix and BIG_RADIX.
  • Testcases for the operators radix and RADIX have been added to chkbig.sd7.
  • The compiler has been improved to do an optimization for the action INT_MDIV when the divisor is known at compile time. When the dividend is known to be positive or zero it is casted to an unsigned integer and the quotient is casted back to a signed integer. Dividing an unsigned integer by a constant is known to be faster than dividing a signed integer.
  • The functions bigRadix, bigRadixPow2, bigRadix2To36 and uBigDivideByDigit have been added to big_rtl.c
  • The function bigRadix has been added to big_gmp.c.
  • The functions stri_to_cstri8_buf and cstri8_buf_to_stri have been added to striutl.c.
  • In traceutl.c the function mapTraceFlags has been improved to work correctly when the parameter trace_level defines several options.
  • The function printTraceOptions has been added to traceutl.c.
  • In arr_rtl.c the definition of getArgv has been improved to use less #ifdef directives in the function body.

New in Seed7 05.20131110 (Nov 11, 2013)

  • Compiler and runtime library have been improved to work on Sparc
  • 64-bit machines under OpenBSD. Thanks go to Brian Callahan, for
  • his support and for providing access to his Sparc 64-bit machine.
  • The FAQ explanation concerning portability has been improved.
  • The new library cc_conf.s7i has been added. This library manages
  • configuration values for C compiler and runtime.
  • The compiler has been improved to use the library cc_conf.s7i.
  • The chapter about the defines used in version.h has been improved
  • in src/read_me.txt.
  • The type rtlGenerictype has been renamed to generictype in the
  • files of the runtime library. Now compiler and runtime library
  • both use the name generictype.
  • The function checkForLimitedStringLiteralLength, a check for
  • trigraph sequences and checks for the presence of getrlimit()
  • and siglongjmp() have been added to chkccomp.c.
  • The function setupStack has been added to cmd_rtl.c. This function
  • tries to raise the stack limit to STACK_SIZE.
  • Usages of USE_SIGSETJMP have been renamed to HAS_SIGSETJMP.
  • The table key_code has been improved in kbd_inf.c and kbd_poll.c.
  • Now the erase char of the terminal interface (VERASE) is always
  • returned as backspace (KEY_BS respectively '\8\'). This improves
  • the behavior under Cygwin.
  • The function utf8_init has been changed in kbd_inf.c and
  • kbd_poll.c to assume UTF-8 mode when no locale environment
  • variable is set.
  • The function msgDigest in msgdigest.s7i has been changed to use
  • in-parameters.
  • The function configValue has been moved from osfiles.s7i to
  • cc_conf.s7i.
  • The macro REALLOC_STRI_SIZE_SMALLER has been added to heaputl.h.
  • Several usages of REALLOC_STRI_SIZE_OK in the runtime library have
  • been changed to usages of REALLOC_STRI_SIZE_SMALLER.
  • The compiler has been improved to initialize boolean and
  • enumeration elements of structs with the values value.boolvalue
  • respectively value.enumvalue. This is necessary to work correctly
  • on big-endian systems.
  • Interpreter and compiler have been improved to support the actions
  • ACT_EQ and ACT_NE.

New in Seed7 05.20131027 (Oct 28, 2013)

  • Compiler and runtime library have been improved to support
  • big-endian systems. Thanks go to Brian Callahan, for his support
  • and for providing access to his PowerPC Macintosh under OpenBSD.
  • The list of source files and the chapter about the defines used in
  • version.h have been improved in src/read_me.txt.
  • The library tls.s7i has been improved to avoid raising an
  • exception, when the remote side closes the socket.
  • The program chkccomp.c has been improved to write defines for
  • CHECK_INT_DIV_BY_ZERO, INT_DIV_BY_ZERO_SIGNALS and
  • DO_SIGFPE_WITH_DIV_BY_ZERO to version.h.
  • Documentation comments have been added or improved in fillib.c,
  • int_rtl.c, soclib.c, tim_dos.c, tim_unx.c, tim_win.c, ut8lib.c,
  • ut8_rtl.c, tls.s7i and bytedata.s7i.
  • The generic compare functions bigCmpGeneric, bstCmpGeneric,
  • chrCmpGeneric, intCmpGeneric, rflCmpGeneric, setCmpGeneric,
  • strCmpGeneric and typCmpGeneric have been improved to work
  • endianness neutral. Now they work correct on little and
  • big-endian systems.
  • The generic create functions bigCreateGeneric, bstCreateGeneric,
  • drwCreateGeneric, rflCreateGeneric, setCreateGeneric,
  • strCreateGeneric and itfCreateGeneric have been improved to work
  • endianness neutral. Now they work correct on little and
  • big-endian systems.
  • The new generic copy functions bigCpyGeneric, bstCpyGeneric,
  • drwCpyGeneric, fltCpyGeneric, rflCpyGeneric, setCpyGeneric and
  • strCpyGeneric have been added. This functions work endianness
  • neutral.
  • The new generic destroy functions bigDestrGeneric,
  • drwDestrGeneric, rflDestrGeneric, setDestrGeneric and
  • strDestrGeneric have been added. This functions work endianness
  • neutral.
  • The functions uintCmpGeneric, intCreateGeneric and intDestrGeneric
  • have been renamed to genericCmp, genericCreate respectively
  • genericDestr.
  • The functions genericCpy, ptrCmp, ptrCmpGeneric, ptrCpyGeneric and
  • ptrCreateGeneric have been added to int_rtl.c.
  • The function cmdConfigValue in cmd_rtl.c has been improved to
  • support the config value DO_SIGFPE_WITH_DIV_BY_ZERO.
  • The handling of the option -l in processOptions (file s7.c) has
  • been improved to work endianness neutral.
  • Several functions have been optimized:
  • In infile.c: get_file_name and get_file_name_ustri
  • In prg_comp.c: prgSyobject
  • In rfllib.c: rfl_elemcpy and rfl_idx
  • In rfl_data.c: rflElemcpy, rflIdx and rflTail
  • The function get_ident and the macro IDENT_TABLE have been changed
  • to have an additional progtype argument.
  • The function typNum in typ_data.c has been improved to use a
  • hashtable.
  • In typlib.c the functions typ_num and typ_str have been improved
  • to call typNum respectively typStr.
  • Support for the actions ACT_ICONV and ACT_ORD has been added to
  • interpreter, compiler and runtime library.
  • The function id_string2 has been added to datautl.c, and used in
  • ref_data.c and typ_data.c.

New in Seed7 05.20131013 (Oct 14, 2013)

  • Libraries for TLS (Transport Layer Security), SSL (Secure Sockets
  • Layer) and HTTPS (HyperText Transfer Protocol Secure) support have
  • been added. The new libraries are: arc4.s7i, asn1.s7i, cipher.s7i,
  • gethttps.s7i, hmac.s7i, pkcs1.s7i, tls.s7i and x509cert.s7i.
  • Comparison operators for < (proper subset) and > (proper superset)
  • have been added to hashsetof.s7i.
  • The type digestAlgorithm and the functions msgDigest, blockSize
  • and digestSize have been added to msgdigest.s7i.
  • The function hex has been added to bytedata.s7i.
  • The example program castle.sd7 has been improved to avoid, that
  • an item can be dropped on an illegal place.
  • The library make.s7i has been improved to accept the option -p for
  • the cp command.
  • Documentation comments have been added to sockbase.s7i,
  • socket.s7i, atom.c, entutl.c, soclib.c, soc_rtl.c and striutl.c.
  • The padding in the message digest functions of msgdigest.s7i has
  • been corrected. Now the functions pad nothing instead of 64 bytes,
  • when the message length is 55 (mod 64).
  • The function getHttp in gethttp.s7i has been improved to use
  • a case-insensitive comparison for HTTP header field names.
  • In exec.c the functions eval_arg_list and dump_arg_list have been
  • improved to avoid reading from freed memory. This occured in very
  • rare cases.
  • The functions find_action (in actutl.c), fltParse (in flt_rtl.c),
  • cmdConfigValue (in cmd_rtl.c) and find_sysvar (in syvarutl.c)
  • have been improved to use the macros MAX_STRI_EXPORT_LEN and
  • max_utf8_size.
  • Interpreter and runtime library have been improved to ignore the
  • signal SIGPIPE. Writing to a broken pipe or socket raises the
  • exception FILE_ERROR instead.
  • The functions bln_and and bln_or in blnlib.c have been improved
  • to return either SYS_TRUE_OBJECT or SYS_FALSE_OBJECT.
  • The program chkccomp.c has been improved to determine the
  • alignment used by malloc and whether an access to unaligned memory
  • succeeds.
  • Usages of ALLOC_CHUNK in flistutl.h have been improved to allocate
  • aligned memory the same way as malloc returns aligned memory.
  • The program chkccomp.c has been improved to define the macro
  • 'inline', when the C compiler does not support the keyword inline.
  • Occurances of 'INLINE' have been replaced with 'inline' in the
  • files analyze.c, atom.c, big_gmp.c, big_rtl.c, chr_rtl.c, exec.c,
  • findid.c, infile.c, int_rtl.c, numlit.c, parser.c, rfl_data.c,
  • scanner.c, striutl.c, strlib.c, str_rtl.c, syntax.c and ut8_rtl.c.

New in Seed7 05.20130929 (Sep 30, 2013)

  • The functions bStriLe, bytesLe, bStriBe and bytesBe have been
  • added to bytedata.s7i. This functions convert an integer to a
  • sequence of bytes.
  • The compiler has been improved to generate inline code for the
  • action STR_PUSH. This action is used when a character is appended
  • to a string (with the operator &:= ).
  • The function sendGet has been added to gethttp.s7i.
  • The functions str_yy_mm_dd and str_hh_mm_ss have been added to
  • time.s7i.
  • Checks for +:= and -:= have been added to chkbig.sd7.
  • Checks for bytesBe and bytesLe have been added to chkint.sd7.
  • Checks for & and &:= have been added to chkstr.sd7.
  • The function doLocalDeclsOfStatement has been added to the
  • compiler. This function is used to simplify the processing
  • of various statements.
  • The functions that process the statement actions BIG_GROW,
  • BIG_LSHIFT_ASSIGN, BIG_MULT_ASSIGN, BIG_RSHIFT_ASSIGN,
  • BIG_SHRINK, BLN_CPY, CHR_CPY, CHR_GROW, CHR_SHRINK, ENU_CPY,
  • FIL_CPY, FLT_CPY, FLT_DIV_ASSIGN, FLT_GROW, FLT_MULT_ASSIGN,
  • FLT_SHRINK, INT_AND_ASSIGN, INT_CPY, INT_GROW, INT_LSHIFT_ASSIGN,
  • INT_MULT_ASSIGN, INT_OR_ASSIGN, INT_RSHIFT_ASSIGN, INT_SHRINK,
  • INT_URSHIFT_ASSIGN, REF_CPY, RFL_INCL, SET_EXCL, SET_INCL,
  • SOC_CPY, STR_PUSH and TYP_CPY in the compiler have been
  • simplified.
  • The functions int_toBStriBe and int_toBStriLe have been added to
  • intlib.c.
  • The functions intToBStriBe and intToBStriLe have been added to
  • int_rtl.c
  • In big_rtl.c and big_gmp.c the functions bigFromBytesBe and
  • bigFromBytesLe have been renamed to bigFromByteBufferBe
  • respectively bigFromByteBufferLe.
  • The performance of the functions bst_cmp (in bstlib.c), bstCmp
  • (in bst_rtl.c) and strMult (in str_rtl.c) has been improved.
  • The macro 'unlikely' has been added to functions in bst_rtl.c.

New in Seed7 05.20130908 (Sep 9, 2013)

  • The compiler has been improved to use charvalue instead of
  • intvalue, when characters are initialized. Thanks go to Brian
  • Callahan, for reporting the bug. Btw.: Brian Callahan created an
  • openBSD port for Seed7.
  • The makefile mk_freebsd.mk has been added to support compilation
  • under freeBSD. Thanks go to Pietro Cerutti, for providing it.
  • The makefiles mk_clang.mak and mk_freebsd.mk have been improved
  • to use the options -ffunction-sections, -fdata-sections and
  • -Wl,--strip-debug.
  • The functions bStriLe2BigInt, bytesLe2BigInt, bStriBe2BigInt,
  • bytesBe2BigInt, bStriLe, bytesLe, bStriBe and bytesBe have been
  • added to bytedata.s7i. This functions convert between sequences
  • of bytes and bigInteger numbers.
  • In bytedata.s7i the functions bytesLeAsInt and bytesBeAsInt have
  • been renamed to bytesLe2Int respectively bytesBe2Int.
  • Parameter names have been added to seed7_05.s7i, graph_file.s7i,
  • graph.s7i, reference.s7i, pac.sd7, tetg.sd7, tet.sd7 and wiz.sd7.
  • Checks for the Karatsuba multiplication and the functions bytesBe,
  • bytesLe, bytesBe2BigInt and bytesLe2BigInt have been added to
  • chkbig.sd7.
  • Checks for set membership in character sets have been added to
  • chkset.sd7.
  • The readability of the bitset initialisation in the compiler (s7c)
  • has been improved.
  • Interpreter and compiler have been improved to support the new
  • actions BIG_FROM_BSTRI_BE, BIG_FROM_BSTRI_LE, BIG_TO_BSTRI_BE and
  • BIG_TO_BSTRI_LE.
  • The functions bigFromBytesBe, bigFromBytesLe, bigFromBStriBe,
  • bigFromBStriLe, bigToBStriBe and bigToBStriLe have been added to
  • both, big_gmp.c and big_rtl.c.
  • In big_gmp.c and big_rtl.c the function bigImport has been
  • rewritten to use bigFromBytesBe.
  • The readability of the function uint2_mult in int_rtl.c has been
  • improved.
  • The program chkccomp.c has been improved to check for a ones
  • complement inttype and if casting can be used to get the element
  • of a union.
  • Several makefiles have been adjusted to use 'cp -p' instead of
  • 'cp -a'. The cp command openBSD does not support -a.
  • The function bigRand in big_rtl.c has been improved to avoid that
  • a random number is outside the required range.

New in Seed7 05.20130820 (Aug 20, 2013)

  • The library sha1.s7i has been renamed to msgdigest.s7i.
  • The message digest and secure hash functions md4, md5, sha224 and
  • sha256 have been added to msgdigest.s7i.
  • The new library propertyfile.s7i, which defines functions to
  • read a property file into a hash table, has been added.
  • The performance of the random number generator has been improved.
  • The function uint2_mult in int_rtl.c is now defined as inline
  • function. The macro 'unlikely' has been added to describe that the
  • initialisation of the random number generator is unlikely.
  • The function uint_mult has been added to int_rtl.c and used in
  • big_rtl.c.
  • The macro 'unlikely' has been added to functions in flt_rtl.c.
  • The function bytesLeAsInt has been added to the library
  • bytedata.s7i.
  • In bytedata.s7i the function int64AsBytesBytesLe has been renamed
  • to int64AsEightBytesLe.
  • A variant of the function skipWhiteSpace has been added to the
  • library scanfile.s7i.

New in Seed7 05.20130722 (Jul 23, 2013)

  • Spelling errors in chlog.txt, faq.htm and faq.txt have been fixed.
  • The function conText (in con_win.c) has been improved to work
  • correctly for long strings. The underlying function WriteConsoleW
  • fails for string lengths above some limit between 26000 to 32000.
  • The functions find_window, remove_window, gkbGetc, gkbKeyPressed,
  • gkbButtonPressed, gkbRawGetc, gkbWindow, gkbButtonXpos and
  • gkbButtonYpos have been moved from drw_win.c to the new file
  • gkb_win.c.
  • In the functions drwPCircle, drwPFCircle, drwPFEllipse and
  • drwFPolyLine (file drw_win.c) wrong usages of inIntRange have been
  • replaced with better code.
  • In con_win.c the table map_key has been improved such that kbdGetc
  • recognizes the key F12.
  • In gkb_x11.c the functions find_window, enter_window and
  • remove_window have been improved.
  • The makefiles mk_bcc32.mak, mk_bccv5.mak, mk_mingc.mak,
  • mk_mingw.mak, mk_msvc.mak, mk_msys.mak and mk_nmake.mak have been
  • changed to use the new file gkb_win.c.
  • The program chk_all.sd7 has been improved to call chkhsh.sd7.
  • The program chkhsh.sd7 has been improved.
  • The compiler has been improved to generate compare functions with
  • the correct prototype.
  • The functions bitSize and process_generic_cmp_declaration have been
  • added to s7c.sd7.
  • In flt_rtl.c the function fltCpy has been renamed to fltCpyGeneric.
  • The functions dump_hash and dump_helem have been added to
  • hsh_rtl.c.
  • The function new_type in typeutl.c has been changed to add the new
  • type to the parameter owningProg instead of the global prog.

New in Seed7 05.20130704 (Jul 4, 2013)

  • A wordfile for Ultraedit and a syntax definition file for Textpad
  • has been added. Many thanks to Renato Lenzi for providing it. This
  • files can be found also on his great italian page about Seed7.
  • A compilation problem with DJGPP in fil_rtl.c has been fixed
  • (thanks to "Rugxulo" for pointing it out).
  • The keyboard read function getc(KEYBOARD) has been improved to
  • accept all Unicode characters also under Linux/Unix/BSD. Up do now
  • the function did only accept Latin-1 characters.
  • The keyboard read function getc(KEYBOARD) has been improved to
  • accept usages of the mouse wheel also under Windows.
  • Checks for correct UTF-8 encoding of the program source have been
  • added. Overlong UTF-8 encodings, UTF-16 surrogate characters and
  • missing UTF-8 continuation bytes result in a compile time error.
  • The example program err.sd7, which checks compile time error
  • messages, has been improved.
  • The FAQ explanations concerning Unicode and automatic casts have
  • been improved.
  • Documentation comments have been added to gzip.s7i and make.s7i.
  • The example programs gkbd.sd7 and kbd.sd7 have been improved to
  • write the character, if it is printable.
  • The example programs pairs.sd7, panic.sd7, tetg.sd7, sokoban.sd7,
  • sudoku7.sd7, mandelbr.sd7 and wator.sd7 have been changed to use
  • proportional Seed7 pixmap fonts.
  • Tests for the functions lower and upper with cyrillic letters have
  • been added to chkstr.sd7.
  • The libraries console.s7i, pixmap_file.s7i, graph_file.s7i,
  • file.s7i, editline.s7i, echo.s7i, null_file.s7i, external_file.s7i,
  • strifile.s7i, stritext.s7i, tee.s7i, window.s7i, reverse.s7i,
  • lower.s7i and upper.s7i, have been improved to work with
  • proportional fonts. Proportional font support uses the functions
  • moveLeft, erase, backSpace, cursorOn and cursorOff.
  • The vector font cronos16 has been improved to look more similar to
  • the font cronos27.
  • The bitmap fonts stdFont10, stdFont12, stdFont14, stdFont16,
  • stdFont18, stdFont20 and stdFont24 have been improved.
  • The vector fonts vecFont10 and vecFont18 have been adjusted to look
  • like the corresponding bitmap fonts.
  • The fonts stdFont8, stdFont9 and cronos27 have been improved to use
  • less spacing between the characters.
  • In graph_file.s7i the logic of a writeln after a setPosXY has been
  • changed. Now the writeln moves one line downward relative to the
  • position given with setPosXY.
  • A description of the subrange operator, which gets an array slice
  • from a position with maximum length, has been added to the manual.
  • A table to map keysym values to Unicode and the function
  • mapKeysymToUnicode, which does a binary search in this table, have
  • been added to gkb_x11.c.
  • The function gkbGetc in gkb_x11.c has been improved to work without
  • recursion, to use mapKeysymToUnicode and to recognize cursor keys
  • in combination with ALT, NUMLOCK and SHIFT.

New in Seed7 05.20130602 (Jun 17, 2013)

  • Documentation comments have been added or improved in bigfile.s7i,
  • char.s7i, clib_file.s7i, complex.s7i, external_file.s7i, file.s7i,
  • float.s7i, hash.s7i, integer.s7i, shell.s7i, string.s7i, utf16.s7i,
  • osfiles.s7i, rational.s7i, arrlib.c, blnlib.c, bstlib.c, arr_rtl.c,
  • big_gmp.c, big_rtl.c, bst_rtl.c, chrlib.c, chr_rtl.c, cmdlib.c,
  • cmd_rtl.c, fillib.c, fil_rtl.c, fltlib.c, flt_rtl.c, hshlib.c,
  • hsh_rtl.c, int_rtl.c, pol_sel.c, pol_unx.c, setlib.c, set_rtl.c,
  • strlib.c, str_rtl.c.
  • The functions lower and upper in string.s7i and char.s7i have been
  • improved to use the default Unicode case mapping. In other words:
  • conversions to lower respectively upper case works for all Unicode
  • characters, which have a case mapping. Characters without case
  • mapping are left unchanged. The mapping is independend from the
  • locale. Individual character case mappings cannot be reversed,
  • because some characters have multiple characters that map to them.
  • In the library deflate.s7i the performance of the deflate
  • compression has been improved by a factor between 5 and 10.
  • The performance of the functions str_cmp, str_range and str_substr
  • in strlib.c has been improved.
  • The performance of the functions strCompare, strRangeSlice,
  • strRange, strSubstrSlice and strSubstr in str_rtl.c has been
  • improved.
  • Tests for the string functions compare, lower and upper and for the
  • index operations head, tail, range and substring have been added to
  • chkstr.sd7.
  • The definition of the macro arrayMaxPos in common.h has been
  • improved and usages of the macro have been added to arrlib.c and
  • arr_rtl.c.
  • The compiler has been improved to support the actions HSH_IDX2 and
  • HSH_UPDATE.
  • The compiler has been improved to inline code for the actions
  • STR_HASHCODE, STR_RANGE and STR_SUBSTR.
  • The function intStrToBuffer has been added to int_rtl.c. This
  • function allows conversions from integer to string, without
  • memory allocation.
  • The compiler has been improved to take advantage of the function
  • intStrToBuffer.
  • The functions getGenericValue, getGenericValueToResultExpr,
  • getTempVariable, beginCastGeneric, endCastGeneric,
  • beginCastGenericToResultExpr and endCastGenericToResultExpr have
  • been added to the compiler.
  • The functions hsh_idx2 and hsh_update have been added to hshlib.c.
  • The functions hshIdxAddr2 and hshUpdate have been added to
  • hsh_rtl.c
  • The macro hashCode has been defined in str_rtl.h and used in
  • str_rtl.c (function strHashCode) and strlib.c (function
  • str_hashcode).
  • The program chkccomp.c was improved to write a definition of the
  • macro INLINE to version.h
  • The deprecated function 'read_dir' has been removed from the
  • library "osfiles.s7i". The replacement of 'read_dir' is 'readDir'.
  • The functions arrHeadTemp, arrRangeTemp and arrSubarrTemp in
  • arr_rtl.c have been improved.

New in Seed7 05.20130602 (Jun 3, 2013)

  • The implementation of the type integer has been changed to use a
  • 64-bit value.
  • Documentation comments have been added to bigint.s7i, integer.s7i,
  • string.s7i, arr_rtl.c, big_gmp.c, biglib.c, big_rtl.c, flt_rtl.c,
  • intlib.c, int_rtl.c, set_rtl.c and str_rtl.c.
  • The new library bin32.s7i, which defines bit operations for 32-bit
  • values, has been added.
  • The new library crc32.s7i, which supports the CRC-32 cyclic
  • redundancy check, has been added.
  • The new library deflate.s7i, which supports the deflate compression
  • algorithm, has been added.
  • The library binary.s7i has been renamed to bytedata.s7i. The
  • functions get_asciiz, get_uint16_le, get_uint32_le, get_uint16_be
  • and get_uint32_be have been renamed to getAsciiz, getUInt16Le,
  • getUInt32Le, getUInt16Be and getUInt32Be respectively. Definitions
  • of the functions int16AsTwoBytesLe, int32AsFourBytesLe,
  • int16AsTwoBytesBe and int32AsFourBytesBe have been added.
  • The functions getBitLe, getBitsLe, getNonCompressedBlock,
  • getLiteralOrLength, getDistance, decodeLength, decodeDistance,
  • decodeFixedHuffmanCodes, getHuffmanValue, computeConversionTable,
  • decodeDynamicHuffmanCodes, processCompressedBlock and inflate have
  • been moved from gzip.s7i to the new library inflate.s7i.
  • The functions gzip, openGzipFile, close and write have been added
  • to the library gzip.s7i.
  • The functions 'name' and 'path' have been added to the library
  • progs.s7i.
  • The function openStrifile has been added to strifile.s7i.
  • The library tar.s7i and the example program tar7.sd7 have been
  • improved to allow the creation of compressed archives.
  • The compiler has been improved to support the actions BIG_CONV,
  • BIN_AND, BIN_OR, BIN_XOR, INT_AND, INT_OR, INT_XOR, INT_URSHIFT,
  • INT_URSHIFT_ASSIGN, PRG_OWN_NAME and PRG_OWN_PATH.
  • Optional checks for integer shift operations have been added to
  • the compiler.
  • The function bigFromInt64 and bigToInt64 in big_gmp.c have been
  • improved.
  • Several functions in big_gmp.c have been improved to free temporary
  • values with mpz_clear().
  • The function big_conv() has been added to biglib.c.
  • The functions drw_image and drwRtlImage have been improved.
  • The functions drwImage in drw_win.c and drw_x11.c have been
  • improved.
  • The meaning of the actions PRG_NAME and PRG_PATH has changed. The
  • new actions PRG_OWN_NAME and PRG_OWN_PATH are used as replacement.
  • The functions strRPos2, strRIPos2 and strRepl2 have been added to
  • str_rtl.c. This functions use a modified Boyer–Moore string search
  • algorithm.
  • Usages of the macro arraySize have been added to drwlib.c,
  • drw_rtl.c, libpath.c and prg_comp.c.
  • The macro arrayMaxPos has been defined in common.h and used in
  • arrlib.c and arr_rtl.c.

New in Seed7 05.20130519 (May 20, 2013)

  • The support for K&R C has been removed. Now an ANSI C compiler is
  • required to compile Seed7. For many years all officially supported
  • C compilers have been ANSI C compilers.
  • The manual chapters describing rational, bigRational and the
  • functions min and max have been improved.
  • The functions min and max have been added to bigint.s7i, bigrat.s7i
  • and rational.s7i.
  • Addition and subtraction operators in rational.s7i and bigrat.s7i
  • have been improved to reduce the result.
  • The parse operator in bigrat.s7i has been improved to process
  • negative rational literals correctly.
  • The function round in bigrat.s7i has been fixed.
  • Documentation comments in boolean.s7i, float.s7i and integer.s7i
  • have been improved.
  • A standard bitmap font, with capital height of 8, has been defined
  • in the new library stdfont8.s7i.
  • Definitions of min and max have been removed from dnafight.sd7 and
  • dna_base.s7i.
  • The example program ftp7.sd7 has been improved to allow linewise
  • editing with history.
  • The code generation for the actions HSH_CPY and HSH_IDX in the
  • compiler has been improved.
  • In arrlib.c, hshlib.c, arr_rtl.c and hsh_rtl.c several functions,
  • which enlarge an array, have been improved to avoid overflows. This
  • overflows could happen when the array size or the new maximum index
  • are computed.
  • Definitions of the macros inLongRange, castToLong, inTimeTRange,
  • arrayIndex, bitsetSize, bitsetSize2 and bitsetIndex have been added
  • to common.h.
  • Functions in setlib.c and set_rtl.c have been improved to use the
  • macros bitsetSize, bitsetSize2 and bitsetIndex.
  • Functions in drw_x11.c and drw_win.c have been improved to check
  • for range violations and to cast parameters.
  • The functions to draw an image (drwImage, drw_image, drwRtlImage)
  • in drw_dos.c, drw_win.c, drw_x11.c, drw_rtl.c and drwlib.c have
  • been improved to use image data with int32type elements.
  • The function socInputReady in soc_rtl.c has been improved to take
  • the seconds and microsecond parameter into account.
  • In tim_rtl.c the functions timFromTimestamp, timFromIntTimestamp,
  • timToTimestamp and timSetLocalTZ have been improved.

New in Seed7 05.20130505 (May 7, 2013)

  • Functions to compare arrays (compare, , =) have been added
  • to the library array.s7i.
  • In seed7_05.s7i the functions hashCode and compare have been
  • defined for enum types.
  • In the library bigrat.s7i the operator parse has been improved. Now
  • the parse operator accepts decimal numbers with repeating decimals.
  • The function integer has been added to the library integer.s7i.
  • This function converts a numeric string, with a specified radix, to
  • an integer.
  • The function bigInteger has been added to the library bigint.s7i.
  • This function converts a numeric string, with a specified radix, to
  • a bigInteger.
  • The files encoding.s7i, gethttp.s7i, scanfile.s7i, scanstri.s7i,
  • xml_ent.s7i and bas7.sd7 have been changed to use the new function
  • integer instead of toInt (toInt was an undocumented internal
  • function).
  • Checks for the function integer have been added to chkint.sd7.
  • Checks for the function bigInteger have been added to chkbig.sd7.
  • The operator sci has been added to to the library complex.s7i. This
  • operater converts a complex to a string in scientific notation.
  • The compiler (s7c) has been improved to support the actions
  • BIG_PARSE_BASED, TYP_CMP, ENU_CPY, ENU_CREATE and GEN_DESTR.
  • The memory management in the interpreter has been improved. Now it
  • is possible that a destructor is called and the object memory is
  • not freed. This is used to free the memory of struct objects only,
  • when the usage_count reaches zero.
  • The UNUSED flag was defined in data.h and used to monitor if the
  • object memory can be freed.
  • The compiler has been improved to call the destructor for local
  • interface objects (In process_local_declaration process_destr_call
  • is called for INTERFACEOBJECT objects).
  • The compiler has been improved to initialize set constants, that
  • are part of a data structure (In walk_const_list SETOBJECT objects
  • are added to set_const_table).
  • The runtime library has been improved to use the action GEN_DESTR
  • instead of PRC_NOOP as destructor for integer and other simple
  • data types.

New in Seed7 05.20130421 (Apr 22, 2013)

  • The FAQ explanation concerning garbage collection has been
  • improved.
  • The manual chapters describing the introduction, EBNF, literals
  • (for integer, bigInteger, float, char and string), set operations
  • and file I/O have been improved.
  • Operations, to get an array slice with a specified length, have
  • been added to the libraries array.s7i and idxarray.s7i.
  • Array aggregates for arrays with a given start index have been
  • added to idxarray.s7i.
  • Functions for binomial coefficient and modular exponentiation have
  • been added to the library bigint.s7i.
  • A definition of an empty set with the name {} has been added to
  • bitset.s7i.
  • Functions to compute the minimum and maximum have been added to the
  • libraries integer.s7i and float.s7i.
  • Documentations comments in keybd.s7i have been improved.
  • In pixmap_file.s7i the logic of a writeln after a setPosXY has been
  • changed. Now the writeln moves one line downward relative to the
  • position given with setPosXY.
  • A pound symbol has been added to several bitmap fonts.
  • A standard bitmap font, with capital height of 9, has been defined
  • in the new library stdfont9.s7i.
  • Checks for the factorial function and the binomial coefficient have
  • been added to chkbig.sd7.
  • The comanche webserver has been improved to accept cookies.
  • The compiler has been improved to generate better code for the
  • allocation of array memory.
  • The function arrMalloc in arr_rtl.c has been improved to avoid an
  • overflow, when the size of the memory is computed.
  • The functions arrSubarr and arrSubarrTemp have been added to
  • arr_rtl.c.
  • Support for the action ARR_SUBARR has been added to the compiler.
  • The macros arraySize and arraySize2 have been defined in common.h
  • and used in arrlib.c, arr_rtl.c, arrutl.c, cmdlib.c, cmd_unx.c and
  • cmd_win.c.
  • Definitions of INT64TYPE_MIN, INTTYPE_MIN and MIN_MEM_INDEX have
  • been added to common.h.

New in Seed7 05.20130401 (Apr 2, 2013)

  • The FAQ explanations concerning, 'in' parameters and different
  • behavior of val and ref parameters, have been improved.
  • The keyboard read function getc(KEYBOARD) has been improved to
  • support more function keys and to accept Unicode characters also
  • under Windows.
  • The program calc.sd7 has been improved to accept and display
  • Unicode characters.
  • The automatic memory management has been improved to work also
  • for the files managed by pollData.
  • The function openEditLineLatin1 has been added to editline.s7i.
  • Only Latin-1 characters are accepted and written to ''outFile''.
  • Unicode characters beyond ISO Latin-1 (ISO-8859-1) are ignored.
  • In file.s7i the function writeln(file, string) has been defined as
  • DYNAMIC (virtual) function. This allows that the implementation
  • function writeln(socket, string) sends string and '\n' together.
  • The definition of keys in keybd.s7i have been changed such that
  • function keys are outside the range of Unicode characters.
  • The new library keydescr.s7i, which defines a hash table with
  • descriptive text for function keys, has been added.
  • The implementation function writeln(null_file, string) has been
  • added to null_file.s7i. This function is used by many derived
  • types.
  • An implementation function of writeln(socket, string) has been
  • added to socket.s7i. This function sends string and '\n' together.
  • Definitions of writeln (without string parameter) have been removed
  • from external_file.s7i, socket.s7i and utf8.s7i.
  • The example programs bas7.sd7, gkbd.sd7 and kbd.sd7 have been
  • changed to use the hash keyDescription (defined in keydescr.s7i).
  • Tests for string assignment and string append (operator &:= ) have
  • been added to chkstr.sd7.
  • The function bigStr in big_rtl.c has been improved to realloc the
  • string to the correct size.
  • The function determineEnvironDefines in chkccomp.c has been
  • improved.
  • The function itf_destr in itflib.c has been improved to cooperate
  • with the function close_stack (defined in name.c).
  • The function kbdKeyPressed in kbd_inf.c has been improved to never
  • wait for input (calls of tcsetattr() were fixed, see below).
  • In pol_unx.c and pol_sel.c the functions addCheck, removeCheck,
  • polCpy, polCreate, polDestr and polClear have been improved to use
  • the function pointers incrUsageCount and decrUsageCount from
  • fileObjectOps.
  • The function initPollOperations has been added to pol_unx.c,
  • pol_sel.c and pol_dos.c.
  • In str_rtl.c the functions strAppend and strCopy have been changed
  • to use SLICE_OVERLAPPING instead of GET_SLICE_ORIGIN.
  • In str_rtl.c the functions strHeadSlice, strRangeSlice,
  • strSubstrSlice and strTailSlice have been improved to avoid
  • (mis)using the string capacity. Now the capacity of a slice is set
  • to zero. Before the origin of a slice was stored in the capacity.
  • The function print_real_value in traceutl.c has been improved to
  • print interface values with more detail.
  • Support for additional function keys has been added to kbd_inf.c,
  • kbd_poll.c, cap_def.h, trm_cap.c and trm_inf.c.
  • The files kbd_inf.c and kbd_poll.c have been improved to use read()
  • instead of fread().
  • The files kbd_inf.c and kbd_poll.c have been improved to take a
  • weakness of tcsetattr() into account. The function tcsetattr() may
  • return success, although not all changes could be carried out.
  • Now the calls of tcsetattr() are done via the new functions
  • term_descr_equal, tcset_term_descr and tcset_vmin_vtime.
  • The compiler has been improved to create and use cpy_... functions
  • for the interface assignment (action ITF_CPY).
  • The free list management for strings has been improved to allow
  • different maximum list lengths for strings with different capacity.
  • Definitions of databasetype and sqlstmttype have been added to
  • common.h. This are the first steps towards database support.

New in Seed7 05.20130317 (Mar 18, 2013)

  • The FAQ explanations concerning, what kind of programs can be
  • written in Seed7 and the automatic memory management of Seed7, have
  • been improved.
  • The compiler (s7c) has been improved to use the function
  • strConcatN, when three or more strings are concatenated.
  • The compiler has been improved to define and use dynamic (virtual)
  • destructors for interface types. The function itfCreate is used as
  • constructor.
  • In the compiler the function init_string_constants_with_slices has
  • been improved, to store the characters of string constants with
  • more density.
  • The compiler functions prepare_typed_result, process_itf_cpy,
  • process_itf_to_interface and process_ref_trace have been improved.
  • In str_rtl.c the functions strIPos2 and strPos2 have been added.
  • This functions use a modified Boyer–Moore string search algorithm.
  • The performance of the function replace2 (library string.s7i) has
  • been improved.
  • The example programs tetg.sd7 and tet.sd7 have been changed to
  • abstain from using an outdated language feature. Now this programs
  • can be compiled.
  • Parameter names have been added to seed7_05.s7i, pixmap_file.s7i,
  • bitset.s7i, dialog.s7i, hash.s7i, console.s7i and string.s7i.
  • In sctlib.c and itflib.c the functions sct_cpy, sct_create,
  • sct_destr, itf_cpy, itf_cpy2, itf_create, itf_create2, itf_destr
  • and itf_to_interface have been improved to use reference counting
  • (usage_count) for all objects of the category STRUCTOBJECT.
  • The support for the actions ITF_TO_HEAP and REF_BUILD has been
  • removed from the interpreter.
  • Support for the action REF_GETREF has been added to interpreter and
  • compiler.
  • The functions itf_to_heap (in itflib.c) and ref_build (in reflib.c)
  • have been removed.
  • The function refItftosct (in ref_data.c) has been renamed to
  • refItfToSct. The function ref_itftosct (in reflib.c) and the
  • compiler have been changed to use the new function name.
  • The types smallpriortype and prior_type have been replaced by
  • prioritytype in common.h, data.h, expr.c, expr.h, findid.h,
  • syntax.c, token.c and token.h.
  • In itf_rtl.c the function itfCreate has been added and the function
  • itfDestr has been removed.
  • Usages of the function stri_charpos in analyze.c and prclib.c have
  • been replaced by calls of strChPos.
  • In executl.c the function crea_struct has been introduced and the
  • function any_var_initialisation has been replaced by the functions
  • sct_elem_initialisation and arr_elem_initialisation.
  • The function prot_block has been added to traceutl.c.

New in Seed7 05.20130303 (Mar 4, 2013)

  • The library editline.s7i has been added. This library defines a
  • file type for linewise editing with history.
  • The manual chapter describing types, especially the type program,
  • has been improved.
  • The calc.sd7 example has been improved to allow linewise editing.
  • The handling of the internal program representation in interpreter
  • and compiler has been improved to free most unused memory.
  • The handling of the functions prgGlobalObjects, refArrToList,
  • refHshDataToList, refHshKeyToList, refLocalVars and refSctToList
  • in compiler and run-time library has been improved to free unused
  • memory.
  • The stack trace has been improved to display infix operators
  • better and to write parameter names.
  • The compiler has been improved to support the action TYP_FUNC.
  • The functions copy_expression and free_expression in listutl.c
  • have been optimized.
  • The function substitute_params has been added to match.c .
  • The functions free_params and free_name_list have been added to
  • name.c .
  • The function dump_list has been added to objutl.c .
  • The function copy_params has been added to entutl.c .
  • The functions prot_float and prot_params have been added to
  • traceutl.c .
  • The functions free_type and close_type have been added to
  • typeutl.c .
  • The free list management has been improved to be configurable
  • in config.h.
  • The memory management in heaputl.h has been improved to work with
  • and without DO_HEAPSIZE_COMPUTATION.
  • The function free_file and remove_prog_files have been added to
  • infile.c.
  • The functions itf_cpy and itf_cpy2 in itflib.c have been improved
  • to support assigning forward declared objects to an interface.
  • The function emptylist and the macro to_empty_list have been
  • renamed to free_list and free_list2.
  • In prg_comp.c the function prgDeclObjects has been renamed to
  • prgGlobalObjects.
  • In ref_data.c the functions refArrmaxidx, refArrminidx,
  • refArrtolist, refScttolist and refHshKeyToList have been renamed
  • to refArrMaxIdx, refArrMinIdx, refArrToList, refSctToList and
  • refHshKeysToList.
  • In ref_data.c the functions refResult, refResini and refSetParams
  • have been improved to raise RANGE_ERROR when the argument is NULL
  • or when it is not a BLOCKOBJECT.
  • In progs.s7i the functions sys_var, error_count, declared_objects,
  • params, setParams, func_result, func_res_init, local_consts,
  • local_vars, array_to_list, array_min_index, array_max_index,
  • struct_to_list, hash_data_to_list, hash_key_to_list,
  • interface_to_struct, obj_number, type_number and match_obj have
  • been renamed to sysVar errorCount, globalObjects, formalParams,
  • setFormalParams, resultVar, resultInitValue, localConsts,
  • localVars, arrayToList, arrayMinIdx, arrayMaxIdx, structToList,
  • hashDataToList, hashKeysToList, interfaceToStruct, objNumber,
  • typeNumber and typeObject.
  • In seed7_05.s7i the functions is_func, is_varfunc, result_type and
  • is_derived have been renamed to isFunc, isVarfunc, resultType and
  • isDerived.

New in Seed7 05.20130217 (Feb 18, 2013)

  • The description of exceptions in the manual has been improved.
  • The handling of program data in interpreter and compiler has been
  • improved to free more unused memory.
  • The handling of the actions PRG_FIL_PARSE and PRG_STR_PARSE in the
  • Seed7 compiler (s7c) has been improved to support releasing unused
  • programs.
  • The function prgDestr (in prg_comp.c) has been improved to free
  • (most of) the data used by a program. Several functions, which need
  • to free program data, have been improved to call prgDestr.
  • The functions prgCpy (in prg_comp.c) and prg_cpy (in prglib.c) have
  • been improve to free a program when the usage_count reaches zero.
  • The functions getPixmap in draw.s7i have been improved.
  • The functions decl_any (in analyze.c), dcl_const and dcl_var (both
  • in dcllib.c) have been improved to free unused expressions.
  • The actions ARR_BASELIT, ARR_BASELIT2, ARR_TIMES, ARR_GEN, ARR_PUSH
  • and ARR_EXTEND in the interpreter (file arrlit.c) have been
  • improved to work correctly for arrays with interface elements.
  • In blockutl.c the functions free_locobj, free_body, free_block and
  • free_local_consts have been added or improved.
  • In entutl.c the function free_entity has been improved to free also
  • syobject and name_list.
  • The function close_entity has been added to entutl.c. This function
  • frees the list of inactive entities.
  • In executl.c the function destroy_local_init_value has been added
  • and the function destroy_object_list has been removed.
  • The parameter dest_type has been added to the function
  • any_var_initialisation (file executl.c).
  • The functions heap_statistic (in flistutl.c) and rtlHeapStatistic
  • (in heaputl.c) have been improved to write information about
  • pollData elements.
  • The functions free_ident and close_idents in identutl.c have been
  • improved.
  • The function free_expression has been added to listutl.c.
  • The function pop_object in name.c has been improved to add inactive
  • entities to a list of inactive entities
  • The function close_stack in name.c has been improved to reverse the
  • list of local objects and to dump and free the local objects.
  • The function dump_temp_value, which releases a value without
  • releasing the object, has been added to objutl.c.
  • The function free_args has been added to prg_comp.c.

New in Seed7 05.20130203 (Feb 4, 2013)

  • Files to generate man pages for Seed7 interpreter and compiler have
  • been added to the documentation (files doc/s7.1 and doc/s7c.1).
  • The makefiles have been improved to support the targets distclean
  • and test.
  • The operators radix and RADIX have been added to the libraries
  • integer.s7i and bigint.s7i. This operators convert an integer
  • respectively bigInteger to a string. The conversion uses the
  • numeral system with the given base.
  • The variants of the function str, which have a second parameter to
  • specify a numeric base, are deprecated now and will be removed in a
  • future release. The operators radix and RADIX should be used
  • instead.
  • Interpreter and compiler have been improved to support the
  • operators radix and RADIX.
  • In chkint.sd7 checks for the function str with base have been
  • replaced with checks for the operators radix and RADIX.
  • Usages of the function str with base have been changed to usages
  • of the operators radix or RADIX in the files gethttp.s7i, bas7.sd7,
  • encoding.s7i and s7c.sd7.
  • Errors in bas7.sd7, concerning the function VARPTR and the
  • statement OPEN, have been fixed.
  • The function getLineWithMacrosApplied in makedata.s7i has been
  • improved to ignore space and tab characters after an escaped
  • newline.
  • Result variables have been renamed in various libraries and example
  • programs.
  • The currency sign character has been added to stdfont10.s7i,
  • stdfont12.s7i, stdfont14.s7i, stdfont16.s7i, stdfont18.s7i,
  • stdfont20.s7i, stdfont24.s7i, vecfont10.s7i and vecfont18.s7i.
  • The file chkccomp.c has been improved to define a macro that
  • describes what happens, when a cast of a float to int overflows.

New in Seed7 05.20130120 (Jan 21, 2013)

  • Interpreter and compiler have been improved to support the option
  • -l. This option allows adding a directory to the include library
  • search path (e.g.: -l ../lib).
  • The compiler (s7c) has been improved to support the option -b.
  • With -b the directory of the Seed7 runtime libraries can be
  • specified (e.g.: -b ../bin).
  • The target s7c in the makefiles has been changed to take advantage
  • of the options -l and -b. Now packages can compile the Seed7
  • compiler without a post install step.
  • Additional function variants of parseFile, parseStri and execute
  • have been added to the library progs.s7i. The new functions allow
  • a detailed specification of parse and execution options.
  • The library gzip.s7c has been improved to decode also blocks with
  • fixed Huffman codes. This type of block is almost never used since
  • dynamic Huffman codes compress better.
  • The parsing of bigInteger literals has been improved to support
  • literals with bases other than 10 (e.g.: 16#FEDCBA98765434210_).
  • The integer and bigInteger functions str (conversion to string)
  • have been changed to use lower case characters for digits larger
  • than 9. Now str(48879, 16) returns "beef" instead of "BEEF".
  • The program make7.sd7 and the library make.s7i have been improved
  • to support multiple targets and the option -C.
  • The Seed7 compiler has been improved to generate special inline
  • code for the case that the C floating point division by zero does
  • not result in Infinity, -Infinity or NaN (not a number).
  • The functions chkLiteral and chkBitLength as well as checks for
  • shifts with negative shift count have been added to the program
  • chkbig.sd7.
  • The function check_division as well as has checks for the operator
  • /:= (in check_nan) have been added to the program chkflt.sd7.
  • The function check_str in chkint.sd7 has been improved to check
  • the new behaviour of the function str with a give base.
  • The makefile mk_clang.mak has been added to support compilation
  • with the clang C compiler.
  • The explanations of possible compilation errors in src/read_me.txt
  • have been improved.
  • The functions interpreterPath and callOwnProgram have been removed
  • from the libraries environment.s7i respectively shell.s7i. This
  • functions were not used in any example program.
  • The support for the interpreter option -m (use less memory during
  • the analyzing phase) has been removed. On many systems it was a
  • noop anyway.
  • Result variables have been renamed in various libraries and example
  • programs.
  • The functions find_include_file, print_lib_path, append_to_lib_path
  • and init_lib_path have been moved from infile.c to the new file
  • libpath.c.
  • The function gen_rtl_array has been defined in the new file
  • arrutl.c. The function is used in the files cmdlib.c (functions
  • cmd_pipe2, cmd_pty, cmd_start_process) and prglib.c (functions
  • prg_exec, prg_fil_parse, prg_str_parse).
  • The interpreter/compiler improvements (option -l) and the new
  • function variants in progs.s7i have been realized with changes in
  • prg_comp.c, analyze.c, data.h, infile.c, infile.h, info.c, option.h
  • and s7.c.
  • The functions prgExec, prgFilParse and prgStrParse in prg_comp.c
  • have been improved to support additional parse and execution
  • options.
  • The function interpr has been renamed to interpret and moved from
  • exec.c to prg_comp.c.
  • The function copy_args has been moved from prclib.c to prg_comp.c.
  • In traceutl.c the function set_trace has been changed and the
  • function set_trace2 has been removed. The functions mapTraceFlags,
  • mapTraceFlags2 and set_protfile_name have been added.
  • The functions uBigMultiplyAndAdd and bigParseBased have been added
  • to big_rtl.c:
  • In big_gmp.c the functions bigBitLength, bigLShift, bigRShift,
  • bigLShiftAssign, bigRShiftAssign, bigParse, and bigToInt32 have
  • been improved and bigParseBased has been added.
  • To support bigInteger literals with base the file numlit.c has been
  • changed. The function readBigBased has been added and readinteger
  • has been removed. Several functions in numlit.c have been renamed.

New in Seed7 05.20130105 (Jan 7, 2013)

  • The Seed7 interpreter was renamed. The new name of the Seed7
  • interpreter is s7.
  • Manual, FAQ, read_me files and several example programs were
  • updated to use the new name of the Seed7 interpreter (s7).
  • The build process of a package can compile interpreter and compiler
  • with (xx and yy must be replaced with a path):
  • make S7_LIB_DIR=xx SEED7_LIBRARY=yy depend s7 s7c
  • The function drwOpen in drw_win.c was improved to hide the console
  • window, when the program was not started from a console.
  • Descriptions of the operators 'sci' and 'exp' were added to the
  • manual.
  • Documentation comments were added to clib_file.s7i.
  • In pixmap_file.s7i the functions for pixmapFontFiles were improved.
  • Interpreter and compiler were improved to allow using winmain as
  • main function.
  • In cmd_win.c the function prepareCommandLine was improved and in
  • the function cmdStartProcess the flag wShowWindow was changed to 1.
  • The file hi.c was renamed to s7.c.
  • In striutl.c the function escape_command was changed to quote
  • commands with special characters under windows.
  • In striutl.c the function cp_to_command was improved to do a
  • quoting under windows, even when there are no parameters.
  • Parameter names were added to null_file.s7i, osfiles.s7i, time.s7i,
  • pixmapfont.s7i, progs.s7i, reference.s7i, seed7_05.s7i, shell.s7i,
  • stritext.s7i, text.s7i, rever.sd7 and snake.sd7.

New in Seed7 05.20121221 (Dec 22, 2012)

  • The Seed7 compiler (s7c) was improved to support constant pixmaps
  • (constants with the type PRIMITIVE_WINDOW).
  • The Seed7 compiler was improved to omit array constant
  • declarations and initialisations for unused array constants.
  • Result variables were renamed in various libraries and example
  • programs.
  • The function DRAW_GETPIXEL in graph.s7i was renamed to getPixel.
  • The function imagePixmap in draw.s7i was changed to have one
  • parameter instead of two.
  • Pictures of a grating and a vampire were removed from castle.sd7,
  • pairs.sd7 and shisen.sd7 and added to pic16.s7i and pic32.s7i.
  • The function getValue was overloaded for PRIMITIVE_WINDOW values
  • in the library progs.s7i.
  • Documention comments were added to the operators & and

New in Seed7 05.20121212 (Dec 13, 2012)

  • The Seed7 compiler was renamed. The new name of the Seed7 compiler
  • is s7c.
  • Manual, FAQ, read_me files and several example programs were
  • updated to use the new name of the Seed7 compiler (s7c).
  • A description of ltrim and rtrim and some links were added to the
  • manual.
  • The library make.s7i and the example program make7.sd7 were
  • improved to execute make commands with predefined macros.
  • The library makedata.s7i was improved to support dependencies
  • which contain a space.
  • The library make.s7i was improved to support the command cp -a.
  • A variant of the function popen, with the parameters 'command' and
  • 'parameters', was added to shell.s7i.
  • An explanation, why & and

New in Seed7 05.20121125 (Nov 26, 2012)

  • The makefiles and the file setpaths.c were improved to accept the
  • macros S7_LIB_DIR (Directory with static Seed7 object libraries)
  • and SEED7_LIBRARY (Directory with the Seed7 include libraries).
  • Now the build process of a package can call make e.g. with:
  • make S7_LIB_DIR=/abc/seed7/bin SEED7_LIBRARY=/abc/seed7/lib depend
  • This way the two paths are defined in version.h. This defines them
  • as default paths in the interpreter executable and in the compiler.
  • An explanation, what a binary Seed7 package should install, was
  • added to the FAQ. This can be used as guideline for Seed7 packages.
  • The description of the times-operator in the manual and in
  • array.s7i was improved.
  • A description of the function name(PROGRAM), file(PROGRAM) and
  • 'environment' was added to the manual.
  • The new library environment.s7i was added. Most of the contents of
  • this library was extracted from "seed7_05.sd7". The new library is
  • included from "seed7_05.s7i", so no change in existing programs is
  • necessary.
  • A documentation comment for getSearchPath was added to shell.s7i.
  • The functions ltrim and rtrim were added to the library string.s7i.
  • Testcases for ltrim and rtrim were added to chkstr.sd7.
  • The function getProgramName in arr_rtl.c was improved to do the
  • comparison with EXECUTABLE_FILE_EXTENSION correctly.
  • The program tar7.sd7 was improved to accept also DOS paths for the
  • file specified with -f.
  • The function homeDir was improved to work with DJGPP (either $HOME
  • or C:\ is used).
  • The function prc_cpy in prclib.c was improved.
  • The files executl.c, hshlib.c, ref_data.c, reflib.c and sctlib.c
  • were improved to copy the descriptor union with memcpy and to copy
  • the posinfo flag with SET_ANY_FLAG, when necessary.

New in Seed7 05.20121104 (Nov 5, 2012)

  • The new function homeDir was added to the library osfiles.s7i.
  • Interpreter and compiler were improved to support homeDir.
  • The libraries makedata.s7i and make.s7i were improved to support replacement macros.
  • A check for division by zero with /:= was added to chkflt.sd7.
  • The compiler (comp.sd7) was improved to use definitions of NOT_A_NUMBER, POSITIVE_INFINITY and NEGATIVE_INFINITY.
  • The program chkccomp.c was improved. Now it manages the macros likely, unlikely, UNISTD_H_PRESENT, POPEN_MISSING, os_utime_orig, os_utime, SE_ALTERNATE_UTIME, INCLUDE_SYS_UTIME, USE_LOCALTIME_R, USE_LOCALTIME_S, FLOAT_ZERO_DIV_ERROR, CHECK_FLOAT_DIV_BY_ZERO, ISNAN_WITH_UNDERLINE and HOME_DIR_ENV_VAR. Additionally chkccomp.c does not depend on the definitions of long_long_EXISTS, long_long_SUFFIX_LL, __int64_EXISTS, __int64_SUFFIX_LL and USE_BUILTIN_EXPECT in chkccomp.h.
  • The functions flt_div and flt_div_assign in fltlib.c were improved to work correctly when CHECK_FLOAT_DIV_BY_ZERO is defined.
  • Several #defines were ommitted from the makefiles.
  • Explanations of several version.h #defines were added to read_me.txt.

New in Seed7 05.20121021 (Oct 25, 2012)

  • The library vecfont10.s7i, which defines the standard vector font
  • with capital height 10, was added. Now mahjong.sd7 and shisen.sd7
  • use vecfont10.s7i.
  • The programs mahjong.sd7, pairs.sd7, shisen.sd7 and sokoban.sd7
  • were improved to fit into a screen with a resolution of 1024 x 768.
  • The library make.s7i was improved: The parsing of command
  • parameters (used by the Unix version of the echo command), was
  • improved. The processing of pattern rules was improved (The rule
  • with the shortest stem value is used, when several rules match).
  • Functions to read a makefile were moved from make.s7i to the new
  • library makedata.s7i.
  • The reading of makefiles was improved: The processing of the gmake
  • directives 'ifeq' and 'ifneq' was improved to allow else clauses.
  • The processing of the nmake directive 'if' was added. Merging of
  • dependencies for rules with the same target was improved.
  • The parse function for time values (library time.s7i) was improved
  • to allow fractions of a second.
  • The functions getSubNodes and getContent and a for-loop for xmlNode
  • values were defined in the library xmldom.s7i.
  • The compiler was improved to initialize bstring literals correctly,
  • when pointers are 64-bit and integers are 32-bit.
  • The font libraries cronos16.s7i, cronos27.s7i, modern27.s7i and
  • vecfont18.s7i were improved to include vectorfont.s7i.
  • The font libraries stdfont10.s7i, stdfont12.s7i, stdfont14.s7i,
  • stdfont16.s7i, stdfont18.s7i, stdfont20.s7i and stdfont24.s7i were
  • improved to include bitmapfont.s7i.
  • The program dnafight.sd7 was improved to limit the speed of the
  • animation.
  • The program make7.sd7 was improved to recognize the options
  • correctly. Additionally make7 inherits also all improvements of
  • makedata.s7i and make.s7i.
  • The program ftp7.sd7 was improved to accept the option -?.
  • The graphic libraries drw_x11.c and drw_win.c were improved to draw
  • the background of maximized windows with the color of the last
  • clear command.

New in Seed7 05.20121007 (Oct 8, 2012)

  • An error message, that could occur when the Seed7 interpreter is
  • compiled, is explained in the FAQ and to 'src/read_me.txt'.
  • A description of the for-step-statement was added to the manual.
  • The library make.s7i was improved. Now makefile dependencies can
  • contain colons (:) and equal signs (=). The parameters of the echo
  • command are parsed better now. Calls of the function callOwnProgram
  • are also avoided now. This way the library works correctly, when it
  • is used by programs other than make7.sd7.
  • The library tar.s7i was improved to set the file mode, when an
  • archive is extracted.
  • Testcases for a variant of the @:= operator, which copies a string
  • to another, were added to the program chkstr.sd7.
  • Interpreter and compiler were improved to support the situation,
  • when source and destination of the @:= operator (action STR_POSCPY)
  • are identical.
  • The compiler was improved to support the action ITF_DESTR.
  • The compiler was improved, to call C compiler and linker with
  • specific options, such that unneeded functions are ommited (when
  • the linker and executable file format support this feature).
  • The compiler was improved to remove debug symbols, unless called
  • with -g (some makefiles now define LINKER_OPT_NO_DEBUG_INFO).
  • The function name(PROGRAM) was improved, to return the program name
  • without following symbolic links.
  • The function path(PROGRAM) was improved, to follow symbolic links
  • (see function followLink in cmd_rtl.c). Consequently dir(PROGRAM)
  • also follows symbolic links.
  • The function CommandLineToArgvW in cmd_win.c was improved.
  • The files itf_rtl.c and itf_rtl.h, which contain interface
  • functions, were added.
  • The makefile mk_mingc.mak was added to support compilation of the
  • self extracting version of Seed7.

New in Seed7 05.20120923 (Sep 24, 2012)

  • Experimental support for automatic memory management with reference
  • counting was added to the interpreter.
  • The libraries external_file.s7i, field.s7i, stritext.s7i, gzip.s7i,
  • listener.s7i, pixmap_file.s7i, shell.s7i, socket.s7i, strifile.s7i,
  • dir.s7i, utf16.s7i, utf8.s7i and xmldom.s7i were improved to use
  • the function toInterface.
  • The function name(PROGRAM) was improved, to return the name of the
  • program without extension and without path.
  • The interpreter was improved to support the action ITF_DESTR.

New in Seed7 05.20120909 (Sep 10, 2012)

  • The chapters about predefined statements and the foreign function
  • interface in the manual, were improved.
  • An explanation, why the div operator is used for integer divisions,
  • was added to the FAQ.
  • The FAQ about garbage collection was improved.
  • Links to EBNF syntax descriptions and exceptions were added to the
  • HTML version of the manual.
  • EBNF syntax descriptions in the manual were improved.
  • Interpreter and compiler were improved to support the actions
  • CMD_ENVIRONMENT and CMD_GET_SEARCH_PATH.
  • The library shell.s7i was improved to define the functions
  • getSearchPath and environment.
  • The function path(PROGRAM) was improved to return the accurate
  • value under all circumstances.
  • Several preprocessor defines were moved from "common.h to the new
  • include file "config.h".
  • In cmdlib.c the function toArraytype() was introduced and used in
  • cmd_environment() and cmd_getSearchPath().
  • In cmd_rtl.c the functions add_stri_to_array() and
  • complete_stri_array() were introduced and used in read_dir(),
  • getSearchPath() and cmdEnvironment().
  • Parameter names in drw_win.c, drw_x11.c and drw_dos.c were changed
  • to fit to the names used in graph.s7i.
  • Parameter names in clib_file.s7i, keybd.s7i, sockbase.s7i,
  • socket.s7i, utf8.s7i, fil_rtl.c, gkb_rtl.c, kbd_rtl.c, soc_dos.c,
  • soc_rtl.c and ut8_rtl.c were changed to fit to each other.
  • The function conv_from_os_stri() was added to striutl.c .
  • The function concat_path in str_rtl.c was improved to work
  • correctly, when the relative path contains "..".
  • In several makefiles defines for SEARCH_PATH_DELIMITER and
  • os_environ were added and defines for
  • MAP_ABSOLUTE_PATH_TO_DRIVE_LETTERS were replaced with
  • defines for OS_PATH_HAS_DRIVE_LETTERS.
  • A description of several C preprocessor macros used in "version.h"
  • and "config.h" was added to the file "src/read_me.txt".
  • Parameter names were added to function definitions in various
  • libraries.
  • Documentation comments were added or improved in the files
  • "clib_file.s7i", "external_file.s7i", "socket.s7i", "fil_rtl.c" and
  • "striutl.c".
  • The function determineEnvironDefines was added to "chkccomp.c".

New in Seed7 05.20120826 (Aug 27, 2012)

  • A chapter, which explains the foreign function interface, was added
  • to the manual.
  • Syntax descriptions, code examples and tables in the HTML version
  • of the manual were improved.
  • Documentation comments were added to the file "striutl.c".
  • A description of several C preprocessor macros used in "version.h"
  • was added to the file "src/read_me.txt".

New in Seed7 05.20120806 (Aug 13, 2012)

  • The new library image.s7i was added. The contents of this library
  • was extracted from the program "carddemo.sd7".
  • The new library make.s7i was added. The contents of this library
  • was extracted from the program "make7.sd7".
  • The function 'str' and the 'parse' operator were added to the
  • library bstring.s7i.
  • The function readDir was added to the library tar.s7i.
  • A documentation comment was improved in the library bigint.s7i.
  • The generation of bstring constants in the compiler (comp.sd7) was
  • improved.
  • The function intStrHex was renamed to intStrPow2Base in the files
  • "int_rtl.c", "int_rtl.h" and in the compiler. The new function is
  • used to convert an integer to a string, when the number base is a
  • power of two.
  • The function stri_export was renamed to stri_export_utf8 in the C
  • source files.
  • The function cp_to_cstri was renamed to cp_to_cstri8 in the C
  • source files.
  • Documentation comments were added and improved in the file
  • "striutl.c".
  • The makefile mk_msvc.mak was changed to write a definition of
  • LIMITED_CSTRI_LITERAL_LEN to "version.h".

New in Seed7 05.20120721 (Jul 23, 2012)

  • Documentation comments were improved in the libraries idxarray.s7i,
  • array.s7i, dir.s7i, external_file.s7i, osfiles.s7i, duration.s7i
  • and time.s7i.
  • Parameter names were added to function definitions in the
  • libraries array.s7i, bigfile.s7i, hash.s7i and idxarray.s7i.
  • The compiler was improved to generate better inline code for set
  • membership (operator: in).
  • The functions 'cmdFileType' and 'cmdFileTypeSL' in "cmd_rtl.c" were
  • improved to return FILE_ABSENT, when the file name is too long
  • (stat() respectively lstat() return an error and errno has the
  • value ENAMETOOLONG) or when the file name is an empty string.
  • The new libraries subrange.s7i, ref_list.s7i and reference.s7i were
  • added. The contents of this libraries were extracted from the
  • seed7_05.s7i library.

New in Seed7 05.20120703 (Jul 4, 2012)

  • The manual was improved to contain more links and to use more
  • coloring.
  • Parameter names were added to function definitions in the
  • libraries array.s7i, integer.s7i, bigint.s7i, float.s7i, keybd.s7i,
  • bitsetof.s7i, idxarray.s7i, boolean.s7i, hashsetof.s7i, socket.s7i,
  • char.s7i, file.s7i, bitset.s7i, poll.s7i, sockbase.s7i and
  • string.s7i .
  • Documentation comments were improved in the libraries string.s7i,
  • poll.s7i and progs.s7i .
  • The new libraries "bstring.s7i" and "category.s7i" were added. The
  • contents of this libraries were extracted from the "progs.s7i"
  • library.
  • Interpreter and compiler were improved to explain the option -?.

New in Seed7 05.20120617 (Jun 18, 2012)

  • FAQ and manual were improved to contain more links. The additional
  • links improve also the Seed7 homepage.
  • The FAQ answer, which explains abstract data types, was improved.
  • The type 'PRIMITIVE_FILE' was renamed to 'clib_file'.
  • Documentation comments were improved in the libraries array.s7i,
  • bigrat.s7i, bitset.s7i, boolean.s7i, integer.s7i, charsets.s7i,
  • bigint.s7i, complex.s7i, dir.s7i, echo.s7i, char.s7i, keybd.s7i,
  • line.s7i, listener.s7i, null_file.s7i, scanfile.s7i, shell.s7i,
  • socket.s7i, stdio.s7i, strifile.s7i, string.s7i, stritext.s7i,
  • bigfile.s7i, text.s7i, utf16.s7i, utf8.s7i and wrinum.s7i.
  • The new libraries "enable_input.s7i" and "enable_output.s7i" were
  • added. The contents of this libraries were extracted from the
  • "enable_io.s7i" library.
  • The new library "clib_file.s7i" was added. The contents of this
  • library was extracted from the "external_file.s7i" library.
  • The compiler (comp.sd7) was improved to accept a Windows path.
  • The example program "make7.sd7" was improved to support the
  • commands 'ifneq', '-include' and '+='.
  • The program "toutf8.sd7" and the library "charsets.s7i" were
  • improved to support the code pages 277, 280 and 297.
  • The control characters of the code pages 037, 273, 285, 500 and
  • 1047 in "charsets.s7i" were improved.

New in Seed7 05.20120603 (Jun 4, 2012)

  • An alternate version of the function 'filInputReady' was added to
  • the file "fil_unx.c" (thanks to Rainer Weikusat and Geoff Clare
  • for their help). The new function is used when "version.h" does
  • not define the macro 'read_buffer_empty'.
  • A check and a definition of the macro 'read_buffer_empty' for
  • HPUX was added to "chkccomp.c" (thanks to Richard Kettlewell and
  • Marc for their suggestions).
  • The example program "make7.sd7" was improved. Now it supports the
  • commands 'ifeq', 'wildcard' and 'include'. The commands of a rule
  • can now contain empty lines. Pattern rules can now be combined with
  • dependency rules (rules without commands).
  • The "ftp7.sd7" example program was improved to support the commands
  • 'delete' and 'rename'.
  • The FAQ and the manual were improved to contain more links. The
  • additional links improve also the Seed7 homepage.
  • The new libraries "array.s7i", "hash.s7i", "bitset.s7i," "set.s7i",
  • "bitsetof.s7i", "hashsetof.s7i", "idxarray.s7i" and "struct.s7i"
  • were added. The contents of this libraries were extracted from the
  • "seed7_05.s7i" library. They are included from "seed7_05.s7i", so
  • no change in existing programs is necessary.
  • Documentation comments were added to "array.s7i", "idxarray.s7i",
  • "pixmapfont.s7i", "bitset.s7i", "bitsetof.s7i", "hashsetof.s7i",
  • "set.s7i", "hash.s7i" and "bigint.s7i".
  • The function 'moveFile' was added to the "ftp.s7i" library.
  • Comment blocks with deactivated code were removed from the
  • "seed7_05.s7i" library.
  • The program "chkccomp.c" was improved, to produce no error, when
  • the macro 'filInputReady' cannot be defined.

New in Seed7 05.20120520 (May 23, 2012)

  • The FAQ and the manual were improved to contain more links. The
  • additional links improve also the Seed7 homepage.
  • Documentation comments were added to "boolean.s7i", "charsets.s7i"
  • and "vectorfont.s7i"
  • Documentation comments were improved in "integer.s7i", "font.s7i",
  • "duration.s7i", "enable_io.s7i", "listener.s7i", "scanfile.s7i",
  • "poll.s7i", "shell.s7i" and "socket.s7i".
  • The function 'bigParse' in "big_rtl.c" was improved, to work up to
  • 9 times faster. The bigInteger operator 'parse' is implemented with
  • 'bigParse'.
  • The factorial operator (!) was added to "bigint.s7i".
  • A for-until-loop for 'bitset' was added to "seed7_05.s7i".
  • Test for the 'parse' operator, when it parses integer literals with
  • a + sign, were added to "chkbig.sd7".
  • Tests of the function 'compare' were added to "chkbool.sd7".
  • Tests of the bigInteger operator 'parse' were added to
  • "chkexc.sd7".
  • The compiler was improved to generate better inline code for set
  • membership (operator: in).
  • The example program "make7.sd7" was improved. Now it accepts :=
  • to assign a value to a macro.
  • The libraries "bigint.s7i", "float.s7i" and "math.s7i" were
  • improved, to use 'in' parameters instead of 'ref' parameters.
  • Spaces at the end of the line were removed in "file.s7i",
  • "ftp.s7i", "osfiles.s7i", "stdio.s7i", "pol_sel.c", "read_me.txt",
  • "pol_unx.c" and "soc_rtl.c".

New in Seed7 05.20120506 (May 7, 2012)

  • A typo in the manual, concerning the 'integer' operator 'rpad',
  • was fixed (thanks to Robert A Duff for pointing it out).
  • The compiler (comp.sd7) was improved to generate optimized code
  • for the integer 'mod' operator (thanks to Andrew Haley,
  • Stefan Ram, Scott Fluhrer and Gene for their help).
  • The compiler was improved to generate optimized code for the
  • integer operators 'mdiv' and 'mod', when the divisor is a negated
  • power of two.
  • The FAQ answers, which explain possible compilation errors and the
  • templates of Seed7, were improved.
  • The chapter explaining primitive actions in the manual was
  • improved.
  • The compiler was improved to use inline code for set membership
  • (operator: in) and set exclusion. The inlining is done instead of
  • calling 'setElem' respectively 'setExcl'.
  • The compiler was improved to use 'setIsEmpty' (which is defined in
  • "set_rtl.c"), when a set is compared with the empty set (action
  • "SET_EQ" and "SET_NE").
  • Interpreter, compiler and runtime library were improved to support
  • the actions "PRG_INTERPRETER" (returns the path of the hi
  • interpreter), "SET_NEXT" (used in for-loops over sets) and
  • "SET_RANGELIT" (used to create sets like {1 .. 5} ).
  • In "chkset.sd7" the tests for set union and set membership were
  • improved.
  • The checks of relation operators in "chkset.s7i" were split into
  • several functions.
  • The example program "printpi2.sd7" was improved.
  • The function 'bigEqSignedDigit' was added to "big_rtl.c" and
  • "big_gmp.c". This function is used in the compiler to optimize
  • bigInteger comparisons (= and ) with small signed numbers.
  • The functions 'reduce' and / in "bigrat.s7i" were improved.
  • The performance of the function setCard in "set_rtl.c" was
  • improved.
  • The functions 'setSymdiff' and 'setUnion' were improved to raise
  • MEMORY_ERROR, when the computation of the data size would
  • overflow.
  • The performance of the function 'prot_set' in "traceutl.c" was
  • improved.
  • The example program "make7.sd7" was improved. Now it processes
  • make commands in makefiles correctly and accepts tabs before the
  • dependencies of a rule. Additionally make7 now allows repeated
  • target names when there no commands.
  • Checks for 'mod' and 'mdiv' were added to "chkint.sd7".
  • A documentation comment was added to the function 'cp_to_cstri'
  • in the file "striutl.c".
  • The macros 'likely' and 'unlikely' were added to if-statements
  • checking for exception conditions in the file "set_rtl.c".
  • A description of possible compilation errors was added to the file
  • "src/read_me.txt".
  • In "shell.s7i" the function 'shell' was overloaded and the
  • function 'callOwnProgram' was added.

New in Seed7 05.20120304 (Mar 5, 2012)

  • The "ftpserv.sd7" example program was improved to support the
  • commands RNFR and RNTO and to work correctly, when the listener
  • cannot open a passive data port.
  • The font support was improved, such that caching of character
  • pixmaps works.
  • Some characters in the standard bitmap fonts were added or
  • improved.
  • The functions 'socSend' and 'socSendto' in "soc_rtl.c" were
  • improved to work correctly under 64-bit systems.
  • The function 'fltSci' in "flt_rtl.c", was improved to avoid
  • a C compiler warning about the change of a constant value.
  • The function 'redraw' in "drw_x11.c" was changed, such that it
  • does not use a parameter of type 'XExposeEvent'.
  • The functions 'drwHeight', 'drwWidth', 'drwXPos' and 'drwYPos'
  • in "drw_x11.c" were improved to raise RANGE_ERROR when the
  • window does not exist.
  • The function 'handleExpose' was introduced in "gkb_x11.c", to
  • handle the job of calling 'redraw'.
  • The type 'unsigned int' was replaced by 'sysizetype' in
  • 'findid.c', 'findid.h', 'identutl.c', 'identutl.h', 'literal.c',
  • 'numlit.c', 'scanner.c' and 'symbol.h'.
  • Some improvements were done in 'prg_comp.c', 'reflib.c',
  • 'analyze.c', 'exec.c', 'infile.c', 'info.c' and 'typlib.c' to
  • reduce the number of warnings.
  • Support for the unused action "ENU_SIZE" was removed.

New in Seed7 05.20120219 (Feb 20, 2012)

  • A call of clearerr(stdin) was added to the function
  • kbdKeyPressed() in the file "kbd_inf.c". This fixes a bug, which
  • happend under FreeBSD (thanks to Pietro Cerutti for pointing out
  • the error and for suggesting this fix).
  • The FAQ answer, which explains the portability of Seed7, was
  • improved.
  • The function 'copyFile' was added to the library "file.s7i" and
  • the files "ftp.s7i" and "ftpserv.sd7" were changed to use it.
  • The function 'removeFile' was added to the library "ftp.s7i".
  • The function 'signOn' was added to the libraries "listener.s7i"
  • and "socket.s7i".
  • The function 'signOff' was improved in "listener.s7i" and
  • "socket.s7i", to use a 'socket' instead of a 'PRIMITIVE_SOCKET'
  • parameter.
  • The "gkbd.sd7" example program was improved.
  • The "panic.sd7" example program was improved to use DRAW_FLUSH
  • less often.
  • The function 'readDir' was added to "osfiles.s7i" as replacement
  • for 'read_dir'. The function 'read_dir' is deprecated and
  • should not be used.
  • The functions 'open_dir' and 'open_dir_path' were renamed to
  • 'openDir' and 'openDirPath' respectively.
  • The functions 'find_window', 'enter_window', 'remove_window' and
  • 'gkbWindow' were moved from "drw_x11.c" to "gkb_x11.c".
  • Trace statements were added to "drw_x11.c" and "gkb_x11.c".
  • A description of several C preprocessor macros used in "version.h"
  • was added to the file "src/read_me.txt".
  • The makefiles "mk_bcc32.mak", "mk_bccv5.mak", "mk_cygw.mak",
  • "mk_mingw.mak", "mk_msvc.mak", "mk_msys.mak" and "mk_nmake.mak"
  • were changed to write a definition of QUOTE_WHOLE_SHELL_COMMAND to
  • "version.h".

New in Seed7 05.20120205 (Feb 6, 2012)

  • FAQ answers, explaining call-by-name and how it is implemented in
  • Seed7, were added.
  • The "ftpserv.sd7" example program was improved to work with
  • various ftp client programs.
  • The speed of the function 'socLineRead' in "soc_rtl.c" was
  • improved (this function implements getln() for sockets).
  • The Unicode support of the "ftp.s7i" library and the "ftp7.sd7"
  • example program was improved.
  • Documentation comments were improved in "poll.s7i" and
  • "osfiles.s7i".
  • The files "pol_sel.c" and "pol_unx.c" were improved to use the
  • const qualifier.
  • The compiler (comp.sd7) was improved to generate optimized code
  • for the actions "STR_ELEMCPY" and "STR_POSCPY" (which were used
  • by the @:= operator).
  • Testcases for the @:= operator were added to "chkstr.sd7".
  • The program "chkccomp.c" was changed to include "version.h" and
  • to define OS_OFF_T_SIZE. This way "chkccomp.c" can use the macro
  • definitions for os_off_t, TURN_OFF_FP_EXCEPTIONS and
  • DEFINE_MATHERR_FUNCTION from "version.h" instead of "chkccomp.h".
  • The files "cmd_rtl.c" and "fil_rtl.c" were changed to use the
  • macro OS_OFF_T_SIZE.
  • In "osfiles.s7i" the type 'fileType' was introduced as result type
  • for 'fileType' and 'fileTypeSL'.
  • The function 'str' for the type 'fileMode' was improved in
  • "osfiles.s7i".
  • The number of calls of fileno() was reduced in "con_cap.c",
  • "con_tcp.c", "kbd_inf.c" and "kbd_poll.c".
  • Result variables were renamed in "external_file.s7i", "ftp.s7i",
  • "osfiles.s7i", "shell.s7i", "socket.s7i", "string.s7i", "tar.s7i",
  • "utf16.s7i", "utf8.s7i" and "ftpserv.sd7".

New in Seed7 05.20120115 (Jan 21, 2012)

  • The functions shellEscape and toShellPath were added to the
  • "shell.s7i" library.
  • The compiler (comp.sd7) was improved to use 'toShellPath'. Now the
  • compiler works for source files, which contain spaces in their
  • name.
  • Compiler and interpreter were improved to support the action
  • "CMD_SHELL_ESCAPE" (this action implements the function
  • 'shellEscape').
  • The "ftp7.sd7" example program was improved to support the 'dir'
  • command.
  • The "ftpserv.sd7" example program was improved to support the
  • commands FEAT, MLST, MLSD, DELE, MODE and STRU.
  • The functions listDir and bigFileSize were added to the "ftp.s7i"
  • library.
  • The configuration program "setpaths.c" was improved to support
  • the compilation of Seed7 in a directory with an Unicode name,
  • which contains characters outside of the Basic Multilingual Plane.

New in Seed7 05.20111218 (Dec 19, 2011)

  • The type 'pollData' and the functions 'clear', 'addReadCheck',
  • 'addWriteCheck', 'removeReadCheck', 'removeWriteCheck', 'poll',
  • 'readyForRead', 'readyForWrite', 'files', 'hasNextReadFile',
  • 'hasNextWriteFile', 'nextReadFile' and 'nextWriteFile' were added
  • to the "socket.s7i" library.
  • The makefile "mk_djgpp.mak" was improved to use 'djecho' (thanks
  • to "Rugxulo" for his help).
  • The library "duration.s7i" was improved to support the operators
  • +:= and -:= for the type 'duration'.
  • The function 'startProcess' in the library "shell.s7i" was
  • overloaded to work with a single string parameter.
  • The function 'socWrite' in "soc_rtl.c" was improved.
  • Interpreter, compiler and runtime library were improved to support
  • 'pollData' (polltype) and the actions "POL_ADD_READ_CHECK",
  • "POL_ADD_WRITE_CHECK", "POL_CLEAR", "POL_CPY", "POL_FILES",
  • "POL_HAS_NEXT_READ_FILE", "POL_HAS_NEXT_WRITE_FILE",
  • "POL_NEXT_READ_FILE", "POL_NEXT_WRITE_FILE", "POL_POLL",
  • "POL_READY_FOR_READ", "POL_READY_FOR_WRITE",
  • "POL_REMOVE_READ_CHECK", "POL_REMOVE_WRITE_CHECK" and "POL_VALUE".
  • The files "pollib.c", "pollib.h", "pol_sel.c", "pol_unx.c" and
  • "pol_drv.h" were added to support the type 'pollData'.
  • The "ftpserv.sd7" example program was improved to work silently.
  • In "hsh_rtl.c" the function 'hshIdxWithDefault' was renamed to
  • 'hshIdxEnterDefault' and a new function 'hshIdxWithDefault' was
  • introduced.
  • In "ref_data.c" the functions 'refCmpGeneric' and 'genericCreate'
  • were replaced with 'uintCmpGeneric' and 'intCreateGeneric'
  • respectively.
  • The program "chkccomp.c" was improved to define _matherr(), which
  • handles floating point errors, when necessary.

New in Seed7 05.20111204 (Dec 5, 2011)

  • The makefile "mk_djgpp.mak" was improved to work for DJGPP under
  • DOS (thanks to "Rugxulo" for his help to improve "mk_djgpp.mak").
  • The old makefile "mk_djgpp.mak" was renamed to "mk_djgp2.mak".
  • The option -?, which writes helping information, was added to the
  • hi interpreter and to the compiler (comp.sd7).
  • The "ftp7.sd7" example program was improved to support the command
  • "help".
  • The "sydir7.sd7" example program was improved to accept Unix and
  • DOS paths.
  • The directions N, S, W, E were renamed to NORTH, SOUTH, WEST and
  • EAST in "dna_base.s7i", "blue.dna", "green.dna", "indigo.dna",
  • "red.dna", "tan.dna", "violet.dna" and "white.dna".
  • Result variables were renamed in "bigrat.s7i", "complex.s7i",
  • "rational.s7i" and "time.s7i".
  • Interpreter, compiler and runtime library (files "cmd_unx.c",
  • "cmd_win.c", "cmd_drv.h", "cmdlib.c", "cmdlib.h" and "primitiv.c")
  • were improved to support the new action "CMD_START_PROCESS".
  • A definition of the function 'startProcess' was added to the
  • "shell.s7i" library.
  • The function get_primact in "actutl.c" was improved to suppress
  • writing the list of actions, which are implemented by the same
  • function.
  • The function timNow() in "tim_dos.c", "tim_unx.c" and "tim_win.c"
  • and the functions timFromTimestamp() and timSetLocalTZ() in
  • "tim_rtl.c" were improved to use localtime_s(), when the
  • prepocessor macro USE_LOCALTIME_S is defined.
  • An include command for "math.s7i" was added to "bas7.sd7",
  • "lander.sd7" and "planets.sd7".

New in Seed7 05.20111111 (Nov 14, 2011)

  • Documentation comments were improved in "dir.s7i", "stdio.s7i"
  • and "enable_io.s7i".
  • Testcases for the operators 'sci' and 'exp' in "chkflt.sd7" were
  • changed to succedd on all supported platforms.
  • The compiler (comp.sd7) was improved, to create better debugging
  • information for compiler generated (DYNAMIC) dispatcher functions.
  • The compiler was improved to define and use the macro 'do_setjmp'
  • and to work correctly for empty programs.
  • The program "chkccomp.c" was improved to write one of the
  • preprocessor macros ROUND_HALF_TO_EVEN, ROUND_HALF_UP or
  • ROUND_HALF_AWAY_FROM_ZERO to "version.h". This macros describe
  • the rounding behaviour, when float values are converted to
  • strings with 'printf'.
  • Result variables were renamed in "echo.s7i", "gzip.s7i",
  • "line.s7i",, "external_file.s7i" "null_file.s7i", "osfiles.s7i",
  • stdio.s7i", "strifile.s7i", "stritext.s7i" and "utf16.s7i".
  • The files "drw_win.c", "fil_win.c" and "striutl.c" were improved
  • to reduce the number of compiler warnings.

New in Seed7 05.20111101 (Nov 2, 2011)

  • Documentation comments were improved in "scanfile.s7i",
  • "scanstri.s7i" and "float.s7i".
  • The operators 'sci' and 'exp' were added to "float.s7i". This
  • operators write floating point values in scientific notation.
  • Testcases for the operators 'sci' and 'exp' were added to
  • "chkflt.sd7".
  • The function 'getInteger' was added to "scanfile.s7i" and
  • "scanstri.s7i".
  • The "comanche.sd7" webserver was improved to write information
  • about the option -? respectively -h, when an error was found.
  • The compiler (comp.sd7) was improved, to create better debugging
  • information for compiler generated create, destroy, copy and
  • times functions (actions: ARR_CREATE, HSH_CREATE, SCT_CREATE,
  • ARR_DESTR, HSH_DESTR, SCT_DESTR ARR_CPY, HSH_CPY, SCT_CPY and
  • ARR_TIMES).
  • The creation of code for for-loops in the compiler was improved.
  • Testcases for the for-loop were added to "chkprc.sd7".
  • Interpreter, compiler and runtime library (function 'fltSci' in
  • "flt_rtl.c") were improved to support the new action "FLT_SCI".
  • The debugging options in "mk_msvc.mak" were improved.
  • Parameters were renamed in the files "color.s7i", "complex.s7i",
  • "time.s7i", "duration.s7i" and "shell.s7i".

New in Seed7 05.20111014 (Oct 15, 2011)

  • The FAQ answer, explaining the -v option of the interpreter, was improved.
  • The function 'skipSpaceOrTab' was added to "scanstri.s7i".
  • Documentation comments were added to "utf8.s7i".
  • The compiler (comp.sd7) was improved to generate better code for the actions "INT_POW" and "STR_APPEND".
  • The support for macros, in the "make7.sd7" utility, was improved.
  • The files "drw_x11.c", "findid.h" and "scanner.c" were changed to reduce the number of warnings issured by clang.
  • Functions were moved from "kbd_rtl.c" to the new file "gkb_rtl.c" and prototypes were moved from "kbd_rtl.h" to the new file
  • "gkb_rtl.h". This was done together with changes in the makefiles, to avoid linker errors, when programs are compiled with -O2.
  • The function 'processOptions' in "hi.c" was improved to support the new logic of the option -v.

New in Seed7 05.20111003 (Oct 4, 2011)

  • A check for MEMORY_ERROR was removed from "chkexc.sd7" (thanks to
  • Pietro Cerutti for pointing out problems under 64-bit FreeBSD).
  • Documentation comments in "complex.s7i", "draw.s7i", "float.s7i",
  • "external_file.s7i", "forloop.s7i", "html_ent.s7i", "keybd.s7i",
  • "null_file.s7i", "socket.s7i", "stdio.s7i" and "xml_ent.s7i" were
  • improved.
  • The compiler (comp.sd7) and the makefiles were improved, such that
  • executables only link console libraries (ncurses, etc.), when
  • necessary.
  • The function 'encodeHtmlContent' was added to "html_ent.s7i".
  • The function 'fromPercentEncoded' was moved from "cgi.s7i" to
  • "encoding.s7i".
  • The functions 'toPercentEncoded', 'toUrlEncoded' and
  • 'fromUrlEncoded' were added to the library "encoding.s7i".
  • Compiler, runtime libraries and makefiles were improved to support
  • the configuration macros CONSOLE_LIB (name of the Seed7 console
  • library) and SYSTEM_CONSOLE_LIBS (link option for the console
  • library of the OS).
  • The makefiles were improved to write all dependencies in the file
  • "depend", instead of "depend", "a_depend", "b_depend", "c_depend"
  • and "d_depend".

New in Seed7 05.20110918 (Sep 18, 2011)

  • Support for 'drwGetPixel' was added to the compiler (thanks to
  • DJ Redick, for reporting compilation problems with wator.sd7").
  • FAQ answers, explaining how interpreter and compiler look for
  • include libraries, were improved.
  • The function 'str', which converts a bigInteger number to a string
  • representation with a given base, was added to "bigint.s7i".
  • Documentation comments in "float.s7i" and "socket.s7i" were
  • improved.
  • In "float.s7i" the function 'isnan' was renamed to 'isNaN' and the
  • function 'isNegativeZero' was added.
  • Runtime library and compiler (comp.sd7) were improved, such that
  • float operations work according to IEEE 754.
  • The test program "chkflt.sd7" was improved to check IEEE 754
  • floating point conformance.
  • The program "chk_all.sd7" was improved to call "chkflt.sd7".
  • The "bas7" example program was improved (functions 'ERL' and 'LIST'
  • added, division by zero handled correctly).
  • BigInteger multiplication in the compiler was improved to use
  • 'bigSquare', when a number is multiplied with itself.
  • The compiler was improved to take into account that the actions
  • "SCR_" were renamed to "CON_".
  • The performance of 'bigCmp' and 'bigFromInt32' in "big_rtl.c", was
  • improved.
  • The program "chkccomp.c" was improved to check the IEEE 754
  • support. It checks comparisons with NaN, the creation of negative
  • Zero and the 'pow' function with a zero base.
  • To reach IEEE 754 floating point conformance the functions flt_cmp,
  • flt_eq, flt_ge, flt_gt, flt_isnegativezero, flt_le, flt_lt, flt_ne,
  • flt_pow in "fltlib.c" and the functions setupFloat, fltCmp, fltEq,
  • fltGe, fltGt, fltIsNegativeZero, fltLe, fltLt, fltPow, fltStr in
  • "flt_rtl.c" were added or improved.
  • The makefiles were improved to link "chkccomp.c" with the math
  • library (e.g.: -lm).

New in Seed7 05.20110816 (Aug 17, 2011)

  • An explanation how the syntax of Seed7 is defined, was added to
  • the FAQ.
  • Documentation comments were added to "math.s7i", "shell.s7i"
  • A declaration of Euler's number was added to "math.s7i".
  • The function 'getCommandLineWord' was added to "scanstri.s7i".
  • The functions 'shell', 'cmd_sh', 'popen' and 'popen8' in
  • "shell.s7i" were improved to work correctly under the supported
  • operating systems, even when command and parameters contain
  • spaces.
  • The library "screen.s7i" was renamed to "console.s7i" and the
  • function 'open(SCREEN)' was renamed to 'open(CONSOLE)'.
  • The makefile "mk_bcc32.mak" was improved to work correctly for
  • version 6.71 of bcc32 (thank you to the anonymous google account
  • user, for posting his findings to the Seed7 forum).

New in Seed7 05.20110801 (Aug 1, 2011)

  • The left and right shift operators for bigInteger were improved
  • to work with negative shift counts. Left shifting with a negative
  • shift count results in a right shift. Right shifting with a
  • negative shift count results in a left shift.
  • The interpreter was improved to default to non-verbose program
  • parsing (verbose parsing is done with -v or -v2).
  • The chapter explaining 'float' in the manual was improved.
  • The "draw.s7i" library was improved to contain the functions
  • 'getPixelColor' (obtain the color of a specified pixel from a
  • window or pixmap) and 'pixelToColor' (convert a pixel value to a
  • color).
  • The function 'newPixmap' in "draw.sd7" and the files "drw_x11.c"
  • and "drw_win.c" were improved to allow crating pixmaps, when no
  • window was opened.
  • Documentation comments were added to "integer.s7i", "string.s7i"
  • and "wrinum.s7i".
  • The function 'inputReady' was added to the "socket.s7i" library.
  • The "string.s7i" library, interpreter and compiler were improved
  • to support an overloaded version of the @:= operator. With
  • stri @:= [5] "abc"; the characters 5 to 7 in stri are overwritten
  • with "abc" (the primitive action is "STR_POSCPY").
  • The function 'daysInMonth' was added to the "time.s7i" library.
  • Declarations were moved from "seed7_05.s7i" to the new library
  • "char.s7i".
  • Checks were added to "chkbig.sd7", "chkexc.sd7", "chkstr.sd7"
  • The performance of 'uBigIncr', 'uBigDecr', 'bigDecr', 'bigIncr',
  • 'bigPred', 'bigPredTemp', 'bigSucc' and 'bigSuccTemp' in
  • "big_rtl.c", was further improved.
  • The performace of 'bigImport' and 'bigCLit' in "big_rtl.c", was
  • improved.
  • The handling of the action "ARR_IDX" in the compiler (comp.sd7)
  • was improved.
  • The functions 'bigLShift', 'bigLShiftAssign', 'bigRShift' and
  • 'bigRShiftAssign' in "big_rtl.c" were adjusted to the new shift
  • behaviour for bigInteger values.
  • The prototypes of 'wgetenv' and 'wsetenv' in "cmd_win.c" were
  • improved to use the const qualifier.
  • The macros HEAP_REALLOC_BIG and REALLOC_BIG_CHECK_SIZE in
  • "big_rtl.c" and the macros HEAP_REALLOC_STRI, GROW_STRI and
  • REALLOC_STRI_CHECK_SIZE in "heaputl.h" were improved to avoid
  • unused expression results (which get a warning with clang).
  • The operator lpad0 (function strLpad0 in "str_rtl.c") was improved
  • to add zero characters ('0') after an optional leading sign
  • ('+' or '-').

New in Seed7 05.20110717 (Jul 18, 2011)

  • FAQ answers, explaining how interpreter and compiler
  • look for include libraries, was improved.
  • The 'str' function for 'duration' values was improved to
  • provide micro seconds, when they are not zero.
  • Two 'getHttp' functions in "gethttp.s7i" were improved
  • to allow redirections which refer to other redirections.
  • A documentation comment was written for 'getHostname' in
  • "socket.s7i".
  • Checks for left shift in "chkint.sd7" were improved to
  • check only cases were no overflow occurs.
  • Checks for the 'pos' function were added to
  • "chkstr.sd7".
  • The performance of 'uBigIncr', 'uBigDecr', 'bigDecr',
  • 'bigIncr', 'bigPred', 'bigPredTemp', 'bigSucc' and
  • 'bigSuccTemp' in "big_rtl.c", was improved.
  • The functions 'processBackslash' and
  • 'CommandLineToArgvW' were added to "cmd_win.c".
  • The function 'wgetenv_wstri' was renamed to 'wgetenv' in
  • "cmd_win.c".
  • The functions gkbGetc, processEvents, gkbKeyPressed,
  • mouseButtonPressed, keyboardButtonPressed,
  • gkbButtonPressed, gkbRawGetc, gkbButtonXpos,
  • gkbButtonYpos and drwFlush were moved from "drw_x11.c"
  • to the new file "gkb_x11.c".
  • The performance of 'strPos' in "str_rtl.c", was
  • improved.
  • The compiler was improved to generate the function
  • 'int_raise_error' and to use the function 'raiseError'
  • to create calls of 'int_raise_error'.
  • The compiler (comp.sd7) was improved to generate better
  • code for the action "REF_TRACE", when the object
  • category is REFOBJECT.
  • The generation of the string constant table, in the
  • compiler, was improved.
  • The configuration macro OS_PATH_WCHAR was renamed to
  • OS_STRI_WCHAR in several files.
  • The macro os_getenv_string_free was defined in
  • "os_decls.h".
  • The functions seekFileLength, offsetTell and offsetSeek
  • in "fil_rtl.c" were improved to provide their
  • functionality optionally with os_fgetpos and os_fsetpos.
  • The function offsetSeek in "fil_rtl.c" was improved to
  • return -1, when the offset does not fit into the offset
  • type used by the seek function of the operating system.
  • Makefiles and C source files were changed to use
  • 'os_fopen' instead of 'wide_fopen' and 'fopen'.

New in Seed7 05.20110703 (Jul 4, 2011)

  • A new example program (ftpserv.sd7), a FTP (file
  • transfer protocol) server, was added.
  • The type listener (defined in "socket.s7i") was
  • improved. Now a listener manages its accepted sockets.
  • The new function 'waitForRequest' was added to
  • "socket.s7i". It allows to wait until a request can be
  • read or an incoming connection is accepted. With
  • 'waitForRequest' a server is able to handle interleaved
  • requests from multiple clients.
  • The functions 'eof' and 'hasNext' in "socket.s7i" were
  • improved to work like the corresponding functions of
  • other files.
  • The type socketAddress (defined in "socket.s7i") was
  • improved to support comparisons with '=' and ''.
  • The compiler (comp.sd7) and the makefiles were improved,
  • such that executables only link graphic libraries (X11
  • or gdi), when necessary.
  • The makefile mk_djgpp.mak was introduced. It allows
  • compilation under DOS with DJGPP.
  • Support for Cygwin was improved to allow graphics with
  • Cygwin/X.
  • The functions 'compare' and 'hashCode' were added to the
  • "file.s7i" library. This allows files as keys of hash
  • tables.
  • Documentation comments were added or improved in the
  • files "complex.s7i", "file.s7i", "font.s7i" and
  • "socket.s7i".
  • The "ftp.s7i" library was improved to accept multiple
  • line responses.
  • The function 'quoteHtmlAttrValue' was added to
  • "html_ent.s7i".
  • The functions 'clear' in "screen.s7i" and "windows.s7i"
  • were improved to position the cursor in the top left
  • edge.
  • The "comanche.sd7" webserver was improved to allow the
  • specification of a port and to write help information,
  • when it is called with -h or -? .
  • The "make7.sd7" utility was improved to support the
  • option -i .
  • The meaning of the configuration macros SEED7_LIB,
  • COMP_DATA_LIB and COMPILER_LIB was changed to contain
  • library names without path.
  • Compiler, runtime libraries and makefiles were improved
  • to support the configuration macros DRAW_LIB (name of
  • the Seed7 graphic library), SYSTEM_DRAW_LIBS (link
  • option for the graphic library of the OS) and S7_LIB_DIR
  • (absolute path of the Seed7 runtime libraries).
  • The new file "os_decls.h", which defines macros for OS
  • calls and structs, was added. The definitions in
  • "os_decls.h" were moved from "common.h".
  • The file "setpaths.c" was improved to work under DOS and
  • to be able to handle the codepages 437 and 850.
  • Functions in "striutl.h" were improved to decode
  • operating system strings with UTF-16 surrogate pairs to
  • the UTF-32 strings of Seed7. Decoding and encoding
  • between codepages (437 and 850 are supported) and the
  • UTF-32 strings of Seed7 was also added.
  • The function 'socSelectInput' (defined as 'selectInput'
  • with the action "SOC_SELECT_INPUT" in "socket.s7i") was
  • added to "soc_rtl.c".
  • The function 'socInetAddr' in "soc_rtl.c" (defined as
  • 'inetSocketAddress' with the action "SOC_INET_ADDR" in
  • "socket.s7i") was improved to return an empty socket
  • address when the host could not be found.
  • The function 'openInetSocket' in "socket.s7i" was
  • improved to return STD_NULL when the socked could not be
  • opened.
  • The compiler was improved to support the actions
  • "SOC_HAS_NEXT" and "SOC_SELECT_INPUT".
  • The functions 'readVolumeName' and 'closeVolumeList'
  • were moved from "cmd_win.c" to "dir_rtl.c".
  • The function 'openVolumeList' was added to "cmd_unx.c".
  • The functions 'drwOpen' and 'drwOpenSubWindow' were
  • changed to raise FILE_ERROR when it is not possible to
  • open a window.
  • Calls of 'getenv' in 'examineSearchPath' ("arr_rtl.c")
  • and 'init_lib_path' ("infile.c") were replaced with
  • 'os_getenv'.
  • Several explanations were added to the file
  • "src/read_me.txt".
  • The file "soc_dos.c" was added and the files "scr_dos.c"
  • and "scr_wat.c" were improved.
  • The function 'prot_os_stri' was added to "traceutl.c".
  • The handling of the element 'tm_isdst' from 'struct tm'
  • (filled when localtime() is called) was changed. Now the
  • the flag 'is_dst' is only set when tm_isdst > 0 holds.

New in Seed7 05.20110619 (Jun 21, 2011)

  • A new example program (ftp7.sd7), an FTP internet file
  • transfer program, was added.
  • The "ftp.s7i" library, which supports the FTP protocol,
  • was added.
  • The functions 'numericAddress', 'service' and
  • 'getHostname' were added to the "socket.s7i" library.
  • Support for the actions SOC_ADDR_NUMERIC,
  • SOC_ADDR_SERVICE and SOC_GET_HOSTNAME were added to the
  • compiler (comp.sd7).
  • The compiler was improved to recognize unsupported
  • options and superfluous parameters.
  • The functions 'socAddrNumeric', 'socAddrService',
  • 'socGetAddr', 'socSelect', 'socSelectOne',
  • 'socGetHostname' and 'socInputReady' were added to
  • "soc_rtl.c" (some were commented out).
  • The functions 'select_addrinfo' and 'dump_addrinfo' in
  • "soc_rtl.c" were improved.
  • The functions 'soc_addr_numeric', 'soc_addr_service',
  • 'soc_get_addr', 'soc_get_hostname', 'soc_input_ready'
  • and 'soc_select' were addet to "soclib.c" (some were
  • commented out).
  • The file "soc_rtl.c" was improved to reduce the number
  • of compiler warnings.
  • Documentation comments were improved in the file
  • "socket.s7i".
  • Compiler, runtime libraries and makefiles were improved
  • to support configuration macro CPLUSPLUS_COMPILER.

New in Seed7 05.20110605 (Jun 6, 2011)

  • The new libraries "boolean.s7i", "integer.s7i" and
  • "string.s7i" were added. The contents of this libraries
  • were extracted from the "seed7_05.s7i" library. They
  • are included from "seed7_05.s7i", so no change in
  • existing programs is necessary.
  • Declarations of color constants were moved from
  • "draw.s7i" to "color.s7i".
  • The declaration of 'graph_file' was moved from
  • "draw.s7i" to the new library "graph_file.s7i".
  • The declaration of 'duration' was moved from "time.s7i"
  • to the new library "duration.s7i".
  • . The declaration of 'pixmapFontFile' was moved from
  • "pixmapfont.s7i" to the new library "pixmap_file.s7i".
  • The functions 'getATime', 'getCTime', 'getMTime',
  • 'setATime' and 'setMTime' were moved from "time.s7i" to
  • "osfiles.s7i"
  • The function 'bigFileSize' was moved from "bigfile.s7i"
  • to "osfiles.s7i".
  • Documentation comments were added or improved in the
  • files "bigint.s7i", "bigrat.s7i", "bitmapfont.s7i",
  • "complex.s7i", "dir.s7i", "duration.s7i", "echo.s7i",
  • "enable_io.s7i", "external_file.s7i", "file.s7i",
  • "float.s7i", "font.s7i", "graph_file.s7i",
  • "integer.s7i", "keybd.s7i", "line.s7i", "math.s7i",
  • "null_file.s7i", "osfiles.s7i", "pixmap_file.s7i",
  • "rational.s7i", "screen.s7i", "socket.s7i", "stdio.s7i",
  • "strifile.s7i", "string.s7i", "utf16.s7i", "text.s7i",
  • "time.s7i" and "window.s7i".
  • The function 'read_zip_dir' was added to the "zip.s7i"
  • library.
  • Checks for length, tell and seek with STD_NULL were
  • added to "chkexc.sd7".
  • Interpreter, compiler and runtime library were improved
  • to support the action STR_RIPOS. This allows searching
  • for a string from a given position to the left.
  • Checks for the function 'rpos' were added to
  • "chkstr.sd7".
  • Documentation comments were added or improved in the
  • files "big_rtl.c", "str_rtl.c" and "int_rtl.c".
  • The experimental actions REF_CAST, ITF_TO_HEAP and
  • ITF_TO_INTERFACE were added.
  • The functions 'disconnect_entity' and
  • 'disconnect_param_entities' were added to "name.c".
  • The function 'act_create' in "actlib.c" was improved to
  • remove the names from the formal parameters. This is
  • done with 'disconnect_param_entities'.

New in Seed7 05.20110522 (May 23, 2011)

  • FAQ answers about Seed7s application area, Unicode
  • support, Seed7s closures and how the compiler implements
  • them, were added.
  • A new example program (sydir7.sd7), an utility to
  • syncronize directory trees, was added.
  • The comanche.sd7 webserver was improved to use the Seed7
  • interpreter (hi) to execute CGI scripts with the
  • extension ".sd7".
  • Interpreter, compiler and runtime library were improved
  • to support the action CMD_TO_OS_PATH.
  • The compiler (comp.sd7) was improved to create #line
  • directives with the path notation of the operating
  • system.
  • The file "setpaths.c" was added. It is used during the
  • make process to write the configuration macros
  • SEED7_LIB, COMPILER_LIB, COMP_DATA_LIB and SEED7_LIBRARY
  • to the file "version.h".
  • The makefiles mk_mingw.mak, mk_nmake.mak, mk_msvc.mak,
  • mk_bcc32.mak and mk_bccv5.mak were improved to use the
  • new file "setpaths.c", instead of creating their own
  • versions of "setpaths.c".
  • The configuration macros SEED7_LIB, COMPILER_LIB,
  • COMP_DATA_LIB and SEED7_LIBRARY were changed to use the
  • standard path representation and UTF-8 encoding.
  • The function relativeToProgramPath was added to the file
  • "striutl.c".

New in Seed7 05.20110424 (Apr 25, 2011)

  • Information about the lines of code in Seed7 was added
  • to the FAQ.
  • The FAQ answers about supported operating systems and
  • the analyze phase of the interpreter, were improved.
  • Several spelling errors in the FAQ and in the manual
  • were fixed.
  • The appearance of tables in the FAQ and in the manual
  • was improved.
  • Variants of the function 'timAwait', which work with
  • poll() and ppoll(), were added to the file "tim_unx.c".
  • The makefiles "makefile", "mk_linux.mak", "mk_cygw.mak"
  • and "mk_osx.mak" were improved to select one version of
  • the function 'timAwait'.
  • Descriptions of the configuration macros
  • AWAIT_WITH_POLL, AWAIT_WITH_PPOLL, AWAIT_WITH_SIGACTION
  • and AWAIT_WITH_SIGNAL were added to the file
  • "src/read_me.txt".

New in Seed7 05.20110403 (Apr 4, 2011)

  • The compiler (comp.sd7) was improved to generate less
  • code to initialize arrays. Repeated elements in array
  • initialisations are recognized and the initialisation is
  • done with loops instead of individual assignments. When
  • compiling panic.sd7 this optimisation reduces the size
  • of the generated C program by 77% and the size of the
  • executable by 69%.
  • The compiler (comp.sd7) was improved to generate string
  • literals with reduced space requirements.
  • The function 'getArgv' in "arr_rtl.c" was changed to
  • assume that the parameters 'arg_0' and 'exePath' are not
  • NULL.
  • The code, to recognize constant expressions in the
  • compiler, was improved.
  • The superfluous functions 'gkbXpos' and 'gkbYpos' were
  • removed from "drw_dos.c".

New in Seed7 05.20100320 (Mar 21, 2011)

  • An explaination where the interpreter looks for include files, was added to the FAQ.
  • An explanation how the directory of the predefined include libraries is determined, was added to the FAQ.
  • An explanation how the Seed7 compiler gets information about C compiler and runtime, was added to the FAQ.
  • A description of several C preprocessor macros used in "version.h" was added to the file "src/read_me.txt".
  • Missing functions were added to the file "drw_dos.c". The function 'bstTail' was added to the file "bst_rtl.c".

New in Seed7 05.20110306 (Mar 7, 2011)

  • The support for CGI programs in the comanche.sd7
  • webserver was improved.
  • The first steps towards evaluating pure functions in the
  • compiler (when they are called with constant
  • parameters), were done.
  • The compiler (comp.sd7) was improved to generate code
  • with fewer temporary variables for the actions SET_ELEM
  • and SET_NOT_ELEM.
  • The function 'evaluate' (defined in "progs.s7i" and
  • implemented in "exec.c", "prglib.c" and "prg_comp.c")
  • was improved to work correctly when the evaluation
  • raises an exception.
  • Parameter names were added to the prototypes in the
  • files "exec.h", "executl.h", "expr.h", "identutl.h",
  • "match.h", "objutl.h", "name.h", "object.h", "parser.h",
  • "runerr.h", "symbol.h" and "token.h".
  • The files "memory.c" and "memory.h" were renamed to
  • "objutl.c" and "objutl.h" respectively.
  • The function 'uintCmpGeneric' was introduced in the file
  • "int_rtl.c" and used in compiled programs.
  • The example programs "chk_all.sd7" and "chkprc.sd7" were
  • improved.
  • The file "drw_x11.c" was changed to reduce the number of
  • warnings generated by the C compiler.
  • Missing functions were added to the file "drw_dos.c".

New in Seed7 05.20110220 (Feb 21, 2011)

  • The handling of closure parameters in the compiler
  • (comp.sd7) was improved.
  • A free string memory management for small strings was
  • introduced in "heaputl.h". This improves the performance
  • of some programs with string processing by up to 20
  • percent.
  • The "socket.s7i" library was improved to provide
  • protocol independent network access.
  • The function 'addrFamily' was added to the "socket.s7i"
  • library.
  • Several changes were done to support compiling with a
  • C++ compiler.
  • The compiler (comp.sd7) was improved to generate runtime
  • library prototypes with const qualifier.
  • The macros 'likely' and 'unlikely' were added to
  • if-statements checking for exception conditions in the
  • files "cmd_rtl.c" and "soc_rtl.c".
  • The const qualifier was added to function prototypes in
  • "hsh_rtl.c" and "hsh_rtl.h".
  • The functions 'socInetAddr', 'socInetLocalAddr' and
  • 'socInetServAddr' in "soc_rtl.c" were improved to
  • optionally use the function 'getaddrinfo'. With
  • 'getaddrinfo' it is possible to access computers with
  • IPv4 and IPv6 addresses. For Linux this feature is
  • activated.
  • Interpreter, compiler and runtime library were improved
  • to support the action SOC_ADDR_FAMILY.
  • The compiler (comp.sd7) was improved to generate better
  • code when accessing the element of an array that was the
  • result of another computation.
  • The compiler (comp.sd7) was improved to generate code
  • with fewer temporary variables for the actions ARR_IDX,
  • ARR_LNG, STR_EQ and STR_NE.
  • The initialisation of string constants in the compiler
  • was improved.

New in Seed7 05.20110203 (Feb 3, 2011)

  • Many thanks to Bogdan Lisovich for his help to
  • investigate and fix a compilation problem under Mac OS.
  • The fannkuch-redux benchmark "fannkuch.sd7" from
  • "Bart C" was added (Many thanks to "Bart C" for
  • releasing "fannkuch.sd7" under the GPL).
  • The comanche.sd7 webserver was improved to support CGI
  • programs.
  • The chapter explaining 'operating system access' in the
  • manual was improved.
  • The function 'getCgiParameters(file)' was added to
  • "cgi.s7i".
  • The functions 'setenv' and 'file(PROGRAM)' were added to
  • "seed7_05.s7i"
  • The interpreter and the compiler were improved to
  • support the function 'getenv'.
  • Several changes were done to support compiling with a
  • C++ compiler.
  • The keyword INLINE was removed from the functions
  • bigCmp, bigCreate, bstCmp, bstCreate, fltCmp, intCmp,
  • rflCreate, setCmp, setCreate, strCompare and strCreate
  • (C++ does not generate an externally visible function
  • for inline functions).
  • The compiler (comp.sd7) was improved to generate runtime
  • library prototypes with constant types.
  • The function timFromIntTimestamp was introduced in
  • "tim_rtl.c" and used in "timlib.c" and in compiled code.
  • The example programs dirtst.sd7, eliza.sd7, fib.sd7,
  • gkbd.sd7, hamu.sd7, kbd.sd7, rand.sd7, rever.sd7,
  • sl.sd7, snake.sd7 and tak.sd7 were improved to use the
  • operator

New in Seed7 05.20110116 (Jan 17, 2011)

  • The chapter explaining 'operating system access' in the manual was improved.
  • The standard path representation was changed to forbid drive letters (instead of "C:" the standard path "/c" must be used).
  • The programs comanche.sd7, comp.sd7 and make7.sd7 were improved to work with the new standard path representation.
  • The spacing between characters in the standard bitmap fonts was improved.
  • The example programs startrek.sd7, wiz.sd7, mind.sd7, wumpus.sd7 and addup.sd7 were improved to use the operator

New in Seed7 05.20110102 (Jan 3, 2011)

  • The function convDosPath was added to the "seed7_05.s7i"
  • library. It converts a path with backslashes and drive
  • letters to the standard path representation. E.g.:
  • "C:\seed7" is converted to "/c/seed7". When a path is
  • already in the standard path representation it is left
  • unchanged.
  • Functions with path parameters or path result were
  • improved to accept and return file paths with the
  • standard path representation. The standard path
  • representation uses a slash as path separator. Under
  • Windows a standard path like "/c" is mapped to the drive
  • letter "C:". Reading the directory "/" unter Windows
  • returns a list of available drives.
  • The function path(PROGRAM), which returns the absolute
  • path of the program, was added to the "seed7_05.s7i"
  • library.
  • The function dir(PROGRAM), which returns the directory
  • containing the program, was added to the "seed7_05.s7i"
  • library. The dir(PROGRAM) function allows placing
  • configuration data in the directory of the program.
  • The function getenv was improved to work with Unicode
  • environment variables.
  • The "bas7.sd7" Basic interpreter was improved to
  • interpret RND() as RND and MID statements as equivalent
  • to MID$ statements.

New in Seed7 05.20101219 (Dec 20, 2010)

  • The handling of closures in the compiler ("comp.sd7")
  • was improved. When possible closures are implemented
  • with code inlining. When this is not possible closures
  • are implemented with C functions and a corresponding
  • data structure to hold the environment data.
  • A new example program (make7.sd7), a make utility which
  • can be used to manage the compilation process, was
  • added. Make7 is capable to compile the Seed7 release
  • with every mk_*.mak makefile released with Seed7.
  • Code was moved from the "tar7.sd7" example program to
  • the new library "tar.s7i". The "tar.s7i" library allows
  • programs to deal with tar files without the need to call
  • external programs.
  • The directory seed7/bin was introduced as place for
  • executables and runtime libraries. This should allow
  • installing Seed7 by adding the seed7/bin directory to
  • the PATH. Additionally the environment variable
  • SEED7_LIBRARY can be defined to contain a path the the
  • seed7/lib directory.
  • The performance of the str function (conversion to
  • string), for integer and bigInteger values, was
  • improved.
  • The standard bitmap fonts were improved to reduce the
  • spacing between characters.
  • The FAQ answers explaining portability and debugging
  • were improved.
  • The chapters explaining string functions and stack
  • traces in the manual were improved.
  • Tests for the 'lpad0' operator were added to the
  • "chkint.sd7" program.
  • Compiler and interpreter were improved to support the
  • action BST_STR, which converts a byte string to an
  • UTF-32 string.

New in Seed7 05.20101205 (Dec 6, 2010)

  • The chapter explaining the file open function in the
  • manual was improved.
  • The file open function was improved to return STD_NULL
  • on an attempt to open a directory.
  • Interpreter and compiler were improved to support
  • Unicode program arguments under Windows.
  • The file "chkccomp.c" was added. It is used during the
  • make process to determine properties of the C compiler
  • and the C runtime library.
  • The makefiles were improved to use the new generic file
  • "chkccomp.c", instead of creating their own versions of
  • "chkccomp.c".
  • The time/duration field 'mycro_second' and the functions
  • 'getMycroSeconds', 'toMycroSeconds' and 'MYCRO_SECONDS'
  • were renamed to 'micro_second', 'getMicroSeconds',
  • 'toMicroSeconds' and 'MICRO_SECONDS' respectively. This
  • changes were done in the example programs and in the
  • "time.s7i" library.
  • The functions 'setATime' and 'setMTime' in 'time.s7i'
  • were improved to raise RANGE_ERROR when the specified
  • time is illegal or outside the allowed range.
  • The carddemo.sd7 example program was improved to allow
  • moving, raising and lowering cards with the mouse and
  • mouse buttons.
  • The function 'getHttp' in the "gethttp.s7i" library was
  • improved to handle the status codes 301, 302, 303 and
  • 307.
  • The functions 'hashCode', 'compare', 'setContent',
  • 'toBottom' and 'toTop' were added to the "graph.s7i"
  • library and the compiler was improved to support them.
  • Bitmap fonts were improved to allow scaling.
  • The function 'skipSpaceOrTab' was added to the
  • "scanfile.s7i" library.
  • The "chkhsh.sd7" example program was improved.
  • The compiler was improved to generate code, which
  • defines functions for 'hsh_create' and 'hsh_destr'
  • before they are used.
  • The compiler was improved to generate code with
  • parenthesis around C comma operator expressions. This is
  • necessary to allow using such an expression as argument
  • of a C macro.
  • The handling of the action 'bst_idx' in the compiler was
  • fixed to use 'bstritype' instead of 'stritype'.
  • The compiler was improved to use the function
  • 'generic_sct_cpy'. This function was introduced to allow
  • changing an element of a hash, when the hash has struct
  • elements.
  • The "tar7.sd7" example program was improved to check if
  • a file already exists.
  • The function 'bst_cpy' in "bstlib.c" was fixed to use
  • 'take_bstri' instead of 'take_stri'.
  • The function 'cmdFileType' in "cmd_rtl.c" was improved
  • to return FILE_ABSENT when one element in the path is
  • not a directory.
  • The "drw_x11.c" driver was improved: Expose events now
  • draw only the exposed area. The exposed area is not
  • cleared before the expose event is delivered. Expose
  • events for the whole window are avoided, when a window
  • is resized.
  • The function 'drwFlush' in "drw_x11.c" now proceeds
  • until no expose events are present.
  • The function 'find_window' in "drw_x11.c" now manages
  • the windows with a hash table instead of linked list.
  • The new function 'processEvents' in "drw_x11.c" looks
  • for expose events and processes them.
  • Documentation comments were added to the function
  • 'filOpen' in the file "fil_rtl.c".
  • The files "kbd_inf.c" and "kbd_poll.c" were improved to
  • use utf8_mode also when the LANG environment variable
  • contains the substring "utf8".

New in Seed7 05.20101121 (Nov 23, 2010)

  • The chapters explaining integer and bigInteger in the
  • manual were improved.
  • Several improvements and a bugfix were done in the
  • "gzip.s7i" library.
  • The function openGunzipFile and other functions to
  • support a gunzipFile were added to the "gzip.s7i"
  • library.
  • The "tar7.sd7" (tar archiving utility) example program
  • was improved.
  • The function getCStringLiteralText was added to the
  • "scanstri.s7i" library.
  • The function timeInTimeZone was added to the "time.s7i"
  • library.
  • Several tests of the integer power operator (**) were
  • added to the "chkexc.sd7" program.
  • The function check_power in the "chkint.sd7" program was
  • improved.
  • The compiler (comp.sd7) was improved to generate better
  • code for the actions INT_POW and BIG_IPOW.
  • The compiler was improved to use string slices for the
  • actions STR_HEAD, STR_RANGE, STR_SUBSTR and STR_TAIL.
  • The compiler and the files "seed7_05.s7i", "arrlib.c"
  • and "arr_rtl.c" were improved to allow appending an
  • element to an array with the &:= operator.
  • String and array indexing functions in the compiler were
  • improved.
  • The file "seed7/read_me" was renamed to
  • "seed7/read_me.txt".
  • The function cmdConfigValue in "cmd_rtl.c" was improved
  • to support the config values ALLOW_STRITYPE_SLICES and
  • CC_SOURCE_UTF8.
  • Several makefiles were changed such that #undef commands
  • are not written to the file "version.h".
  • Alternate versions of strAppend and strCopy, which
  • support string slices, were added to the file
  • "str_rtl.c".
  • The functions strHeadSlice, strRangeSlice,
  • strSubstrSlice and strTailSlice were added to the file
  • "str_rtl.c".
  • The memory management of strings in the files
  • "heaputl.c" and "heaputl.h" was improved to support
  • string slices.
  • The files "ref_data.c", "reflib.c", "infile.c",
  • "infile.h", "error.h", "info.c", "info.h", "match.c" and
  • "runerr.c" were changed to improve the action REF_FILE.
  • Parameter names were added to the prototypes in the
  • *lib.h files.
  • The function strLpadTemp was added to the file
  • "str_rtl.c" and used in the compiler.

New in Seed7 05.20101107 (Nov 8, 2010)

  • The chapter explaining exception handling in the manual
  • was improved.
  • The support for bitmap fonts was improved to use
  • fontProperties as base type.
  • The '-' function, which computes the differance of two
  • 'time' values (with a 'duration' result) in "time.s7i",
  • was improved.
  • The function cmdConfigValue in "cmd_rtl.c" was improved
  • to support the config values C_COMPILER_VERSION and
  • GET_CC_VERSION_INFO.
  • In the file "fil_rtl.c" the functions myLseek, myFseek
  • and myFtell were renamed to os_lseek, os_fseek and
  • os_ftell respectively.
  • The makefiles were changed to define os_fseek, os_ftell,
  • C_COMPILER_VERSION and GET_CC_VERSION_INFO.
  • Documentation comments were added to the function
  • alternate_utime in the file "tim_win.c".

New in Seed7 05.20101010 (Oct 11, 2010)

  • The first steps towards support of bitmap fonts were
  • done.
  • The standard bitmap font was defined for the sizes
  • 10, 12, 14, 16, 18 and 24.
  • A new example program (testfont.sd7), which writes with
  • the standard font in various sizes, was added.
  • The initialisation of the random number generator in
  • the function uint_rand in "int_rtl.c" was improved.
  • The function timMycroSec was defined in "tim_unx.c" and
  • "tim_win.c".

New in Seed7 05.20100919 (Sep 20, 2010)

  • The chapter explaining string indexing in the manual was
  • improved.
  • The compiler (comp.sd7) and the hi interpreter were
  • improved to support the actions "ITF_CMP" and
  • "ITF_HASHCODE".
  • The parameter names of the functions arc, chord and
  • pieslice in the "draw.s7i" library were changed to
  • startAngle and sweepAngle.
  • The compiler was improved such that compiled programs
  • which use SIGALARM (the functions 'wait' and 'await'
  • from the "time.s7i" library may use SIGALARM) can be
  • terminated with ctrl-c followed by * and enter.
  • Parameter names were added to the prototypes in the
  • file "drw_drv.h".
  • The function drwPFArcPieSlice in "drw_win.c" was
  • implemented.
  • The functions drwFCircle and drwPFCircle in "drw_x11.c
  • were improved.

New in Seed7 05.20100905 (Sep 6, 2010)

  • The chapter explaining the type 'time' in the manual was improved.
  • The support for source level debugging in the compiler (comp.sd7) was improved.
  • Now the option -g generates better #line directives and the 'main' function was
  • arranged such that the current line shown by a debugger is correct when the program is started.
  • In the "seed7_05.s7i" library the function "rpos" was overloaded to do a reverse search for a character in a string starting from a given position.

New in Seed7 05.20100822 (Aug 23, 2010)

  • A new example program (dragon.sd7), which draws a
  • dragon curve, was added.
  • A new example program (fractree.sd7), which draws a
  • fractal tree, was added.
  • The chapters explaining the types 'time' and
  • 'duration' in the manual were improved.
  • The '-' function, which computes the differance of
  • two 'time' values (with a 'duration' result) in
  • "time.s7i", was improved.
  • The functions 'daysInYear', 'getYears', 'getMonths',
  • 'getDays', 'getHours', 'getMinutes', 'getSeconds'
  • and 'getMycroSeconds' were added to the "time.s7i"
  • library.
  • The "time.s7i" functions 'years', 'months', 'days',
  • 'hours', 'minutes', 'seconds' and 'mycro_seconds'
  • were renamed to 'toYears', 'toMonths', 'toDays',
  • 'toHours', 'toMinutes', 'toSeconds' and
  • 'toMycroSeconds' respectively.

New in Seed7 05.20100718 (Jul 19, 2010)

  • The first steps towards support of variable functions
  • and closures in the compiler ("comp.sd7") were done.
  • The generation of code for 'for' loops and the 'div'
  • operator in the compiler was improved.
  • The compiler function 'getTemporaryToResultExpr' was
  • improved to generate code without casts from
  • 'floattype' to 'generictype'.
  • The function 'rand_32' in "int_rtl.c" was renamed to
  • 'uint_rand' and improved to work better for 64-bit
  • integers.
  • A bug that could occur when loading a saved game was
  • fixed in the example program "castle.sd7".
  • Tests for conversions from integer to float were added
  • to the "chkflt.sd7" example program.

New in Seed7 05.20100704 (Jul 5, 2010)

  • The Seed7 interpreter (hi) was improved to support stack
  • traces with function call notation.
  • The "progs.s7i" library was improved to support indexing
  • and 'for' loops for 'bstring' values.
  • Indexing tests for constant arrays were added to the
  • "chkexc.sd7" program.
  • The compiler was improved to generate code for array and
  • string indexing with temporary values of type 'uinttype'
  • instead of 'memsizetype'.
  • The compiler was improved to generate code with the type
  • 'rtlValueunion' instead of 'valueunion' (this is the
  • same type as in the file "data_rtl.h").
  • The compiler was improved to create dynamic dispatcher
  • functions which copy a struct value when necessary (in
  • function 'process_dynamic_action_call').
  • The compiler ("comp.sd7") was improved to initialize
  • constant 'bstring' values correctly.
  • The compiler option -e was improved to create an
  • executable which sends a signal when an uncaught
  • exception occurs (A caught exception does not send a
  • signal).
  • The files "bstlib.c", "primitiv.c" and the compiler
  • ("comp.sd7") were improved to support the primitive
  • action BST_IDX (which allows indexing of 'bstring'
  • values).
  • A definition of the type 'rtlStructtype' was added to
  • "data_rtl.h".
  • The files "traceutl.c" and "runerr.c" were improved to
  • define and use the functions 'printformparam' and
  • 'prot_name'.
  • Variables were renamed in the files "strlib.c",
  • "bstlib.c" and "ref_data.c".
  • Checks for negative line and column values and casts to
  • 'size_t' were added to the files "scr_inf.c",
  • "scr_cap.c" and "scr_tcp.c".

New in Seed7 05.20100620 (Jun 21, 2010)

  • Documentation comments were added to the libraries
  • "graph.s7i", "keybd.s7i" and "time.s7i".
  • The compiler (comp.sd7) was improved to support the
  • option -te which enables tracing of exceptions in the
  • generated executeble.
  • Some types generated by the compiler were renamed to
  • make them unique (This helps a debugger to distinguish
  • types when values are displayed).
  • The declaration of 'flush' in "seed7_05.s7i" was
  • improved (This way the compiled example program "sl.sd7"
  • works with the correct cursor position).
  • The functions 'prc_for_to' and 'prc_for_downto' in
  • "prclib.c" were changed to terminate the loop when an
  • exception was raised (This way the loop variable has the
  • correct value when an exception occurs).
  • The performance of the functions 'strAppend',
  • 'strAppendTemp', 'strConcatTemp', 'strHeadTemp' and
  • 'strPush' in "str_rtl.c" was improved.
  • Several functions in "big_rtl.c" were improved to avoid
  • a MEMORY_ERROR in the strange case when a 'realloc'
  • which shrinks memory fails.
  • The function alloc_positive_copy_of_negative_big and its
  • calls in "big_rtl.c" were improved to avoid memory leaks
  • in out of memory situations.
  • The functions 'bigIncr' and 'bigDecr' in "big_rtl.c"
  • were improved to work as transactions in out of memory
  • situations.
  • The functions 'bigSuccTemp' and 'bigPredTemp' were
  • improved to work without calling 'bigIncr' and 'bigDecr'
  • respectively.
  • The handling of constant expressions for values with the
  • categories ARRAYOBJECT, STRUCTOBJECT, HASHOBJECT and
  • INTERFACEOBJECT in the compiler was improved.
  • The support for the actions "CMD_SHELL" and "REF_TRACE"
  • in the compiler was improved.
  • Code in the compiler was moved from the function
  • 'generate_main' to 'init_array_constants',
  • 'init_struct_constants', 'init_hash_constants' and
  • 'init_interface_constants'.
  • The creation of array constants in the compiler was
  • improved to use a 'for' loop over a 'ref_list' instead
  • of an 'integer' 'for' loop and an index access to an
  • element of the (possible long) 'ref_list' (This speeds
  • up compilation of programs with huge array constants).
  • The function 'addTypeCategoryForLocalVars' was added to
  • the compiler.
  • The macro 'unlikely' was added to if statements which
  • check for error conditions in the files "str_rtl.c",
  • "big_rtl.c" and "heaputl.c".
  • The macros 'likely' and 'unlikely' were defined in the
  • file "common.h" and in several makefiles.
  • Several functions in "flistutl.c" and "heaputl.c" were
  • improved to produce a correct heap statistic.
  • The const qualifier was added to function prototypes in
  • "prg_comp.c" and "prg_comp.h".
  • The functions 'prg_decl_objects', 'prg_error_count',
  • 'prg_match', 'prg_match_expr', 'prg_syobject' and
  • 'prg_sysvar' in "prglib.c" were changed to call the
  • corresponding functions from "prg_comp.c".
  • The functions 'scr_setpos' and 'scr_write' in "scrlib.c"
  • were changed to call the corresponding functions from
  • "scr_rtl.c".
  • The function 'printparam' was added to "traceutl.c".

New in Seed7 05.20100606 (Jun 7, 2010)

  • An explaination of the difference between overloading
  • and object orientation, was added to the FAQ.
  • The function 'popen8', which opens an UTF-8 pipe, was
  • added to the "shell.s7i" library.
  • Checks for 'log2' were added to the "chkbig.sd7"
  • program.
  • Checks for file exceptions were added to the
  • "chkexc.sd7" program.
  • A check for the 'keys' function for hash tables was
  • added to "chkhsh.sd7".
  • A definition of voidHtmlElements, a set containing HTML
  • element names which possibly have no closing tags, was
  • added to the "html.s7i" library.
  • The experimental function 'readHtml' was added to the
  • "xmldom.s7i" library.
  • Calls of 'rflNe' in the compiler "comp.sd7" were
  • replaced with '!rflEq'.
  • Checks with MAX_UTF8_EXPANSION_FACTOR were added to
  • functions in "actutl.c", "cmd_rtl.c", "flt_rtl.c",
  • "striutl.c", "str_rtl.c" and "syvarutl.c".
  • The function "parseFile" was improved to work with
  • unicode file names and to
  • raise FILE_ERROR when the file is not found or
  • RANGE_ERROR when a backslash is used as path delimiter.
  • The files arrutl.c and arrutl.h were removed and the
  • function "qsort_array" was moved to "arrlib.c".
  • Macros with name endings _SIZE_OK and _CHECK_SIZE were
  • introduced in "heaputl.h" and used in various files.
  • Comparisons with MAX_STRI_LEN and MAX_BSTRI_LEN were
  • added in various files to make sure that there are no
  • overflows when the size of a string or bstring is
  • computed.
  • Macros with name endings _SIZE_OK and _CHECK_SIZE were
  • introduced and used in "big_rtl.c".
  • The type 'offsettype' was renamed to 'os_off_t' in
  • "fil_rtl.c" and the makefiles were improved to write a
  • definition of 'os_off_t' to "version.h".
  • When FTELL_WRONG_FOR_PIPE is defined it is assumet that
  • fseek does also not work correctly for pipes.
  • File read and write functions in "fil_rtl.c" and
  • "ut8_rtl.c" are checked for error conditions and
  • FILE_ERROR is raised when an error happens.
  • The functions 'find_include_file' and 'init_lib_path'
  • were improved and the function 'free_lib_path' was
  • introduced in the file "infile.h".
  • A comment was added to 'genPointList' in "graph.s7i" and
  • the implementation of 'drwGenPointList' in "drw_x11.c"
  • and "drw_win.c" was fixed.
  • In several makefiles functionality was moved from the
  • help program 'chkftell.c' to 'chkccomp.c'.
  • Parameter names were added to the prototypes in several
  • header files.
  • Declarations of a variable named 'cmp' were changed from
  • 'int' to 'inttype' in the files "arrlib.c", "arr_rtl.c",
  • "hshlib.c" and "hsh_rtl.c".
  • The function 'rflNe' was removed from the file
  • "rfl_data.c".

New in Seed7 05.20100516 (May 21, 2010)

  • Seed7 now supports the 64-bit versions of Linux and
  • Mac OS X. Many thanks to "Mensanator" for his help to
  • reach this goal.
  • The compiler (comp.sd7) was improved to generate
  • C programs with fewer casts and with no parentheses
  • around the right hand side of assignments.
  • The compiler was improved to use the hash 'typeCategory'
  • and 'category' values instead of various hashes like
  • 'bigint_types'.
  • The functions 'compare' and 'hashCode' were added to the
  • "complex.s7i" library to allow complex numbers as keys
  • for hash tables.
  • The "progs.s7i" library was improved to allow 'case'
  • statements for 'category' values.
  • The FAQ, explaining function and operator overloading,
  • was improved.
  • The "chk_all.sd7" example program was improved to remove
  • an old executable before calling the compiler.
  • The 'gets' function for UTF-8 files was improved to work
  • correctly when reading from a pipe (see functions
  • 'ut8Gets', 'read_and_alloc_utf8_stri' and
  • 'read_utf8_string' in "ut8_rtl.c").
  • The functions 'remainingBytesInFile', 'read_string',
  • 'read_and_alloc_stri' and 'filGets' in "fil_rtl.c" were
  • added or improved.
  • The macros 'ALLOC_STRI' and 'REALLOC_STRI' and the
  • functions 'growStri', 'strMult', 'filGets', 'ut8Gets'
  • and 'socGets' were improved to avoid overflows when the
  • size of a memory request is computed.

New in Seed7 05.20100502 (May 3, 2010)

  • The "chk_all.sd7" example program was improved to write
  • detailed information when tests fail.
  • The "shell.s7i" library was improved such that 'popen'
  • behaves correctly when the created pipe is closed with
  • 'close'.
  • The compiler and the runtime library were improved to
  • use the correct exeption handling function in compiled
  • and interpreded code (When the compiled compiler
  • analyzes a source program the interpreter will execute
  • some expressions).
  • The macro processing of the compiler was improved to
  • work better for function macros.
  • The functions seekFileLength, offsetTell, offsetSeek,
  • remainingBytesInFile, getFileLengthUsingSeek,
  • getBigFileLengthUsingSeek, filBigLng, filBigSeek,
  • filBigTell, filClose, filGets, filPclose, filSeek and
  • filTell in "fil_rtl.c" were added or improved. This way
  • the types integer and offsettype both can have a size of
  • 32or 64-bit in any combination.
  • The function ut8Gets in "ut8_rtl.c" was improved to use
  • remainingBytesInFile.
  • The makefiles "mk_osx.mak", "mk_linux.mak",
  • "mk_cygw.mak" and "makefile" were improved to define
  • USE_FSEEKO. This causes the use of 'fseeko' and 'ftello'
  • as seek and tell functions in "fil_rtl.c".
  • Support for the actions BST_CMP, BST_HASHCODE and
  • FIL_PCLOSE was added to the interpreter and the
  • compiler.
  • The handling of types in the compiler was improved such
  • that subtypes of 'boolean', 'enum', 'integer',
  • 'bigInteger', 'float', 'char', 'string' and 'bstring'
  • are supported better.
  • A definition of the type 'bstring' was added to the
  • "progs.s7i" library.
  • The compiler and the interpreter were improved to
  • support 'bstring' as key and value for hash tables and
  • 'ref_list' as value for hash tables.
  • A definition of an assignment statement for exceptions
  • was added to the "seed7_05.s7i" library.
  • Tests for the integer parse function were added to
  • "chkint.sd7".
  • The config value LITTLE_ENDIAN was renamed to
  • LITTLE_ENDIAN_INTTYPE in several files.
  • The compiler was improved to use the functions
  • bstriLiteral and typeLiteral to write occurrences of
  • 'bstring' and 'type' literals to the generated C
  • program.
  • The compiler was improved to create prototypes for the
  • functions bstCmp, bstCmpGeneric, bstCreateGeneric,
  • bstHashCode, bstValue, drwGenPointList, filClose,
  • filPclose, rflCreateGeneric and typStr.
  • The function rflCmp was added to "rfl_data.c".
  • The handling of the flag FTELL_WRONG_FOR_PIPE was moved
  • from "cmd_rtl.c" to "fil_rtl.c".
  • Usages of the constant ULONG_MAX were replaced by
  • UINTTYPE_MAX in the files "flt_rtl.c", "int_rtl.c" and
  • "int_rtl.h".
  • The function drwGenPointList was changed to use an array
  • parameter in "drwlib.c", "drw_drv.h", "drw_win.c",
  • "drw_x11.c" and "comp.sd7".
  • The processing of bstParse, bstValue, drwPFArcPieSlice,
  • setSConv, typStr and array cpy_* in the compiler was
  • improved.
  • The const qualifier was added to function prototypes in
  • "rfl_data.c" and "rfl_data.h".

New in Seed7 05.20100418 (Apr 19, 2010)

  • Many thanks to "Mensanator" for his help to debug some
  • 64-bit / Mac OS X problems.
  • The chapters explaining operating system files,
  • primitive actions and the types 'float' and 'type' in
  • the manual were improved.
  • A free list memory management for small 'biginttype'
  • (bigInteger) values was introduced in "big_rtl.c". This
  • improves the performance of some programs by up to
  • 40 percent.
  • The macro definition of REALLOC_BIG in "big_rtl.c" was
  • changed to cooperate with the free list memory
  • management.
  • The file common.h was improved to add a capacity to the
  • struct bigintstruct.
  • The graph.s7i library was improved.
  • The chk_all.sd7 example program was improved to close
  • the pipe files.
  • The compiler (comp.sd7) was improved to handle empty
  • structs correctly.
  • The compiler was improved to produce better code when
  • local functions use variables from surrounding
  • functions.
  • Some changes in the compiler were done to make sure that
  • always the same C program is generated.
  • The compiler was changed to create a typedef before a
  • type is used.
  • The compiler was improved to create data structure
  • definitions which are helpful for a debugger.
  • The compiler was improved to produce better code for the
  • copy actions arr_cpy, big_cpy, bst_cpy, drw_cpy,
  • prg_cpy, rfl_cpy, sct_cpy, set_cpy and str_cpy.
  • The compiler was improved to produce better code for the
  • actions prc_for_to, prc_for_downto, hsh_for,
  • hsh_for_data_key, hsh_for_key.
  • Casts were added to compiler generated function calls of
  • bstCreate, bstDestr, bstCpy, arrBaselit, arrBaselit2,
  • arrExtend, arrGen, drwFPolyLine, drwPolyLine, prgExec,
  • rflHead, setSConv, prgDestr and to various other places.
  • The compiler was improved to create prototypes for the
  • functions bigGcd, bigOdd, bigPredTemp, bigSuccTemp,
  • cmdChdir, cmdConfigValue, cmdMkdir, drwBackground,
  • drwGenPointList, drwNewPixmap, drwPolyLine,
  • drwFPolyLine, drwSetTransparentColor, prgDestr prgExec,
  • refType, rflHead, setIConv, setSConv, strGetenv,
  • strToUtf8, strUtf8ToStri and setupFloat.
  • The function ref_type in "reflib.c" was improved to
  • reliably raise an exception when the type is NULL.
  • Unused variables were removed in the files cards.s7i,
  • draw.s7i, gzip.s7i, seed7_05.s7i, addup.sd7, bas7.sd7,
  • carddemo.sd7, carddemo.sd7, chk_all.sd7, comanche.sd7,
  • comp.sd7, lander.sd7, mahjong.sd7, mandelbr.sd7,
  • panic.sd7, sl.sd7, snake.sd7, sokoban.sd7, sudoku7.sd7
  • and tar7.sd7 .
  • Return statements were changed to omit parentheses in
  • the files actutl.c, analyze.c, bst_rtl.c, dir_dos.c,
  • dir_rtl.c, dir_win.c, drw_rtl.c, fil_rtl.c, flt_rtl.c,
  • hsh_rtl.c, kbd_inf.c, kbd_poll.c, kbd_rtl.c, reflib.c,
  • rfl_data.c, soc_rtl.c, tim_rtl.c and ut8_rtl.c .

New in Seed7 05.20100404 (Apr 6, 2010)

  • Many thanks to "Mensanator" for his help to investigate
  • 64-bit and Mac OS X problems.
  • The chk_all.sd7 check program was improved to check that
  • the interpreted compiler and the compiled compiler
  • generate the same C programs.
  • Checks for 'set of char' were added to the "chkset.sd7"
  • program.
  • The compiler (comp.sd7) and the interpreter (hi) were
  • improved to support the actions BST_EQ, BST_NE and
  • BST_PARSE.
  • The compiler (comp.sd7) was improved to support the
  • actions BST_APPEND and CHR_CMP.
  • The compiler (comp.sd7) was improved to make sure that
  • the same types are used in generated C programs and in
  • the runtime library.
  • The generation of string constants in the compiler was
  • improved to work correctly when the string size is
  • stored as 64-bit unsigned value.
  • The generation of set constants in the compiler was
  • improved to work correctly when bitsettype elements have
  • a size of 64-bit.
  • The compiler was improved to use the union type
  • 'valueunion' instead of 'float2int'.
  • The functions arrBaselit, arrBaselit2, arrExtend and
  • arrGen in "arr_rtl.c" were changed to use parameters of
  • type rtlGenerictype instead of rtlObjecttype.
  • The functions bigCmpGeneric, chrCmpGeneric,
  • fltCmpGeneric, intCmpGeneric, refCmpGeneric,
  • setCmpGeneric, strCmpGeneric and typCmpGeneric were
  • introduced as compare functions with parameters of type
  • rtlGenerictype.
  • The functions bst_append, bst_cpy, bstAppend and bstCpy
  • (defined in "bstlib.c" and "bst_rtl.c") were improved to
  • work correctly when source and destination are
  • identical.
  • The function cmdConfigValue in "cmd_rtl.c" was improved
  • to support the config values INTTYPE_SIZE,
  • FLOATTYPE_SIZE and LITTLE_ENDIAN.
  • Several makefiles were changed to define FLOAT_SIZE,
  • DOUBLE_SIZE and LITTLE_ENDIAN.
  • The functions bigCreateGeneric, intCreateGeneric,
  • drwCreateGeneric, setCreateGeneric and strCreateGeneric
  • were introduced as create functions with a parameter and
  • a result of type rtlGenerictype.
  • The function intDestrGeneric was introduced as destroy
  • function with a parameter of type rtlGenerictype.

New in Seed7 05.20100321 (Mar 24, 2010)

  • Many thanks to "Mensanator" for his help to investigate
  • the problems Seed7 had on his 64 Bit Mac OS computer.
  • Many of the improvements towards support of 64 Bit
  • systems and Mac OS X result from his help (see below).
  • Note that this release does not support 64 Bit systems
  • out of the box, but it certainly is a milestone to reach
  • this goal.
  • The FAQ, how to compile the interpreter, was improved.
  • The file "read_me" was improved to explain compilation
  • under Linux and to refer to "src/read_me.txt" for other
  • operating systems.
  • An explanation how to compile under Mac OS X was added
  • to "src/read_me.txt".
  • An explanation how to correct a make error and a linker
  • error was added to "src/read_me.txt".
  • The compiler (comp.sd7) was improve to use the function
  • "integerLiteral" and to produce C code with more casts
  • and an improved helemlist type.
  • The prototype definitions for gkbKeyPressed,
  • kbdKeyPressed, prgSysvar, refItftosct and typValue
  • generated by "comp.sd7" were improved.
  • All usages of '8 * sizeof(bigdigittype)' as shift count
  • in "big_rtl.c" were replaced by 'BIGDIGIT_SIZE'.
  • The makefiles and common.h were changed to make sure
  • that int32type, uint32type, int64type and uint64type
  • have the size implied by their name.
  • The files big_gmp.c, big_rtl.c, drw_x11.c, error.c,
  • fatal.c, match.c, stat.c, str_rtl.c and traceutl.c were
  • improved to use better formats in printf() calls.
  • Errors in bigToInt32 and bigToInt64 (file "big_rtl.c"),
  • triggered by negative numbers when BIGDIGIT_SIZE is less
  • than 32 and 64 respectively, were fixed.
  • The function cmdConfigValue in "cmd_rtl.c" was improved
  • to make sure that the same types are used in the
  • interpreter and in the compiler (by providing an
  • interface to INT32TYPE, UINT32TYPE, INT64TYPE,
  • UINT64TYPE, INT32TYPE_LITERAL_SUFFIX,
  • INT64TYPE_LITERAL_SUFFIX and POINTER_SIZE).
  • The chkbig.sd7 program was improved with checks for the
  • functions 'ord' and 'bigInteger conv'.
  • The chkint.sd7 program was improved with checks for
  • powers of 2 and with more checks for the functions 'str'
  • and 'integer conv'.
  • The file "common.h" was improved to define several types
  • and constants for integers of different sizes.
  • The system to define the (text) screen and keybord
  • driver was improved to work without the file
  • "inf_conf.h".
  • The keyboard driver "kbd_inf.c" was improved to define
  • the functions return_char_if_present(),
  • consume_chars_present() (which both encapsulate calls of
  • "tcsetattr") and key_table_init().
  • A new keyboard driver "kbd_poll.c", which can be used
  • when "tcsetattr" does not work correctly (e.g. under
  • Mac OS X and Cygwin), was added.
  • The makefiles "mk_osx.mak" and "mk_cygw.mak" were
  • improved to use "kbd_poll.c".
  • The interpreter option -v was improved to write the line
  • numbers of all lines processed (changes in "option.h").
  • Changes in "arrlib.c" were done to reduce the number of
  • warnings generated by the C compiler.

New in Seed7 05.20100307 (Mar 8, 2010)

  • The functions in the gethttp.s7i library were improved to allow the specification of a port number as part of the location (e.g.: localhost:1080/index.htm).
  • The tarx.sd7 (tar archiving utility) example program was
  • renamed to tar7.sd7 .
  • The codepage 8859_11 was added to the charsets.s7i
  • library.
  • The bas7.sd7 (basic interpreter) example program was
  • improved.
  • The toutf8.sd7 example program was improved to write an
  • explanation and to support several IANA/MIME charset
  • names.
  • An explanation what to do, when the path of the bcc32 C
  • compiler contains a space, was added to 'src/read_me.txt'.
  • Documentation comments were added to the charsets.s7i library.

New in Seed7 05.20090719 (Jul 20, 2009)

  • The charsets.s7i library was improved to support the character sets
  • armscii_8, geostd8, ns_4551_1, utf-16be, utf-16le and utf-7.
  • The functions utf16beToStri, utf16leToStri, removeUtf16SurrogatePairs and
  • utf7ToStri were added to the charsets.s7i library.
  • The functions getWord, getNonDigits and getQuotedText were added to the
  • scanfile.s7i library.
  • The functions skipLine and getLine were added to the scanstri.s7i library.
  • Several changes in the interpreter and the runtime library were done to reduce
  • the number of warnings generated by the C compiler.
  • The file src/read_me.txt was improved to explain C compiler warnings
  • because of unused parameter 'arguments'.

New in Seed7 05.20090705 (Jul 6, 2009)

  • The chapter explaining the function 'getenv' in the manual was improved.
  • The dom.s7i library was renamed to xmldom.s7i and its functionality was
  • improved.
  • A new library named inifile.s7i, which allows reading key value pairs from an
  • INI file, was added.
  • The functions getLineComment, getLine, skipXmlComment,
  • getXmlTagHeadOrContent skipXmlTag, getNextXmlAttribute and
  • getNextHtmlAttribute in scanfile.s7i were added or improved.
  • The functions getSymbol, skipXmlComment, getXmlTagHeadOrContent
  • skipXmlTag, getNextXmlAttribute and getNextHtmlAttribute in scanstri.s7i were
  • added or improved.
  • The function isDigitString was added to the seed7_05.s7i library.
  • The functions open_utf16le and open_utf16be in the utf16.s7i library were
  • improved.
  • A new library named xml_ent.s7i, which supports XML entity handling, was
  • added.
  • The compiler comp.sd7 was improved to create more prototype definitions of
  • extern library functions.
  • The interpreter (hi) and the compiler (comp.sd7) were improved to accept a
  • UTF-8 byte order mark at the beginning of a source or include/library file.
  • The types gmpBiginttype and rtlBiginttype in the files big_gmp.c and big_rtl.c
  • were replaced with biginttype (defined in common.h).
  • The function bigLowestSetBit in big_rtl.c was improved to raise
  • RANGE_ERROR when the result does not fit in an integer.
  • The function move_any_file in cmd_rtl.c was improved to raise FILE_ERROR
  • when the file cannot be renamed.
  • The function hsh_idx in hshlib.c was improved to work correctly when the
  • hash is destroyed after indexing.
  • The const qualifier was added in many *.c and *.h files.
  • Several makefiles were changed to use BIGINT_LIB_DEFINE and BIGINT_LIB to
  • decide about the big integer library (big_rtl.c or big_gmp.c).

New in Seed7 05.20090621 (Jun 21, 2009)

  • The chapters explaining set types and primitive actions in the manual were
  • improved.
  • The codepages 720, 1125, 1255, 1256, 1258, 8859_6 and 8859_8 were
  • added to the charsets.s7i library.
  • A new library named dom.s7i, which contains a simple dom parser, was added.
  • Several changes in the interpreter and the runtime library were done to
  • reduce the number of warnings generated by the C compiler.
  • The makefile mk_cygw.mak was improved to better support compilation with
  • cygwin.
  • The file src/read_me.txt was improved to explain compiling under windows
  • with cygwin.
  • The function 'exit' was introduced to terminate a program with a return code.
  • The functions setIsSubset and setIsProperSubset were introduced in set_rtl.c
  • and used in setlib.c and comp.sd7 to replace the functions setGe, setLe,
  • setGt and setLt.
  • The functions setCmp, setEq, setIsSubset and setIsProperSubset in set_rtl.c
  • were improved to avoid accessing memory beyond the set data structure.
  • The function setDiff in set_rtl.c was improved.
  • The chkset.sd7 program was improved with additional checks for the
  • 'compare' function and the set relations.
  • The chk_all.sd7 check program was improved to take the changes in
  • chkset.sd7 into account.
  • The compiler comp.sd7 was improved to support the compilation of the
  • primitive action SET_CMP.
  • The compiler comp.sd7 was improved to compile programs with sets as
  • parameters in user defined functions also correctly with the bcc32 C compiler.

New in Seed7 05.20090607 (Jun 7, 2009)

  • The chkint.sd7 program was improved with additional
  • checks for the binomial coefficient (for values of k greater
  • than n and for negative values of n) and 'bitLength'.
  • The chkstr.sd7 program was improved with additional
  • checks for string subranges ([ A .. B ] and [ A len B ]).
  • An error concerning array subranges was fixed in the
  • function arr_range (arrlib.c).
  • Several changes in the interpreter and the runtime library
  • were done to reduce the number of warnings generated by
  • the C compiler.
  • Occurrences of 'float' in the compiler (comp.sd7) were
  • replaced with 'floattype'.
  • Functions to compute the most and least significant bit of
  • unsigned integers with a width of 8, 16, 32 and 64 bits were
  • added to the file int_rtl.c.
  • The new functions ***MostSignificantBit and
  • ***LeastSignificantBit were used in the following functions:
  • intBitLength, intLog2, bigBitLength, bigDiv, bigLog2,
  • bigLowestSetBit, bigMDiv, bigMod, bigRand, bigRem,
  • setCmp, setMax, setMin and setRand.

New in Seed7 05.20090524 (May 25, 2009)

  • Prevention against a Mac OS X malloc() error was added to filGets. FAQ and src/read_me.txt now explain what happens when running 'make' without 'make depend'.
  • The Seed7 compiler... was improved to generate better C code to copy arrays and hashes.
  • Several interpreter and runtime library changes were made to reduce C compiler warnings.
  • A new library (binary.s7i), which contains functions to read binary data from a string or file, was added.
  • A new library (zip.s7i), which contains a zip decompression function, was added. The type 'SIZE_TYPE' was replaced by 'size_t' in various *.c and *.h file

New in Seed7 20090510 (May 10, 2009)

  • A new example program, the Comanche webserver (comanche.sd7), was added.
  • The function getNonDigits was added to the scanstri.s7i library.
  • Experimental support for new attribute parameters was added.
  • Memory leaks in the functions hsh_excl (hshlib.c) and hshExcl (hsh_rtl.c) were fixed.