Seed7 - The extensible programming language 2020-09-29

Seed7 is a general purpose programming language. It is a higher level language compared to Ada, C++, and Java. In Seed7, new statements and operators can be declared easily. Functions with type results and type parameters are more elegant than a template or generics concept. Object orientation is used when it brings advantages and not in places when other solutions are more obvious. Although Seed7 contains several concepts of other programming languages, it is generally not considered as a direct descendant of any other programming language.

Tags software-development interpreter compiler
License GNU GPL
State stable

Recent Releases

2020-09-2914 Oct 2020 16:32 major feature: - Support for link time optimization has been added. It is available if Seed7 is compiled with gcc or clang. The Seed7 compiler option -flto can be used to activate link time optimization. - Answers to six new questions have been added to the FAQ. - A chapter about for-loops and containers has been added to the tutorial. - The ternary operator a ? b : c has been defined for integer, float, complex, rational, bigInteger, bigRational, char, string, bstring, boolean, bin32 and bin64. - Tests for the ternary operator have been added to chkbig.sd7, chkbin.sd7, chkbool.sd7, chkbst.sd7, chkchr.sd7, chkflt.sd7, chkint.sd7 and chkstr.sd7. - The function rand(low, high) for float has been changed to return a number in the range low, high) instead of low, high . The range low, high) is commonly used by float random number generators. - Tests for the rand() function have been added to chkflt.sd7. - The Seed7 compiler has been improved to inline code for the action FLT_RAND, if the option -oc3 is used and both bounds are constant. - Definitions of FLOATTYPE_MANTISSA_BITS, FLOATTYPE_EXPONENT_OFFSET, STMT_BLOCK_IN_PARENTHESES_OK, RAND_MULTIPLIER, RAND_INCREMENT, CC_OPT_LINK_TIME_OPTIMIZATION and LINKER_OPT_LTO_MANDATORY have been added to cc_conf.s7i. - The files confval.sd7 and cmd_rtl.c have been improved to use the new configuration values. - Interpreter and compiler have been improved to support the action BLN_TERNARY. - In comp/int_act.s7i the functions uintRand(), uintRandMantissa() and uintRandLimited() are defined as macros now, if the Seed7 compiler has been called with -oc3. - In name.c the function close_stack() has been improved to dump the values of BLOCKOBJECT objects after the values of other objects have been dumped. - The program chkccomp.c has been improved to determine the values FLOAT_EXPONENT_OFFSET, STMT_BLOCK_IN_PARENTHESES_OK, CC_OPT_LINK_TIME_OPTIMIZATION and LINKER_OPT_LTO_MANDATORY.
2020-08-3014 Oct 2020 16:31 major feature: Spelling corrections have been done in several files. Many thanks go to Jens Schleusener, for sending a source code misspelling report from Fossies. - The file README.md, which uses the markdown format, has been added. - Answers to seven new questions have been added to the FAQ. - Descriptions of array, hash, set and struct in the manual have been improved to contain examples of type declaration and usage. - In array.s7i the functions remove() and insert() have been improved to avoid copying whole elements. - The string slice functions have been changed to raise INDEX_ERROR for negative indices or lengths. - The array slice functions have been changed to raise INDEX_ERROR for negative indices or lengths. - In chkstr.sd7 the tests for string slices have been adjusted to the new behavior. - The example program chkidx.sd7 has been added. This program checks if INDEX_ERROR is correctly raised for string operations. - The example program chkarr.sd7 has been added. This program checks if array operations work correct. - The program chk_all.sd7 has been improved to call and check the new programs chkidx.sd7 and chkarr.sd7. - Compiler and interpreter have been improved to support the actions ARR_INSERT, ARR_INSERT_ARRAY and ARR_REMOVE_ARRAY. - The compiler has been improved to support name parameters with varfunc instead of func. - The file comp/arr_act.s7i has been improved to support ARR_INSERT, ARR_INSERT_ARRAY and ARR_REMOVE_ARRAY. - The file comp/str_act.s7i has been improved to support the changed string slice functions. - The functions arr_insert(), arr_insert_array() and arr_remove_array() have been added to arrlib.c. These functions work without copying whole elements. Instead a memmove() is used on a part of the array to move object records. - The functions arrInsert(), arrInsertArray() and arrRemoveArray() have been added to arr_rtl.c. These functions work without copying whole elements. Instead a memmove() is used on a part of the array to move 64-bit elements.
2020-07-2714 Oct 2020 16:29 major feature: - In ut8_rtl.c the function ut8Seek() has been improved such that a call of ut8Seek() can be directly followed by a statement to write to the file. - The library rpm.s7i has been improved to write changes to the archive file, when the archive is closed. - The library tar_cmds.s7i has been improved to support Zstandard compressed tar archives. - The functions setOwner() and setGroup() have been added to cpio.s7i and osfiles.s7i. - The test programs chkbig.sd7, chkbin.sd7, chkflt.sd7, chkhsh.sd7, chkint.sd7, chkset.sd7 and chkstr.sd7 have been improved to increase the code coverage of the Seed7 run-time library. - The example program chkfil.sd7 has been added. This program checks the correctness of file operations. - The example program chkbst.sd7 has been added. This program checks the correctness of bstring functions. - The program chk_all.sd7 has been improved to call the new programs chkbst.sd7 and chkfil.sd7. It also has been adjusted to the changes in the check programs. - In strifile.s7i the function write() has been improved to use @:= if a file is overwritten. This is much quicker that the previous approach, that used several string concatenations. - The function openTarFileWithMagic() has been added to tar_cmds.s7i. This function is used by tarTell() and tarXtract(). - In cpio.s7i the function to close the CPIO archive has been changed to leave the underlying file open. - In external_file.s7i the function close has been changed to set the underlying clib file to NULL. - In gzip.s7i the function to close a gzipFile has been changed to leave the destination file open. - The conversion function integer() has been added to bin32.s7i and bin64.s7i. - The compiler (s7c.sd7) has been improved (in set_act.s7i) to produce correct code for the actions SET_CONV1 and SET_CONV3 (independent if a normal expression or a result expression is converted). - Interpreter and compiler have been improved to support the actions CMD_SET_GROUP and CMD_SET_OWNER.
2020-06-2814 Oct 2020 16:28 major feature: - The new library zstd.s7i has been added. This library supports Zstandard compressed files. - The functions getOwner() and getGroup() have been added to cpio.s7i, osfiles.s7i, ar.s7i, rpm.s7i, tar.s7i, zip.s7i and filesys.s7i. - The function unsetenv() has been added to the library environment.s7i. This function deletes a variable from the environment. - In bytedata.s7i the function getAsciiz() has been improved. - The function gets() has been improved in gzip.s7i, iobuffer.s7i, lzma.s7i, strifile.s7i, subfile.s7i, utf16.s7i, xz.s7i and string.s7i. Now gets() can be called with a maxLength of integer.last, without triggering an OVERFLOW_ERROR. - Several improvents have been done for the library rpm.s7i: * Now it supports a Zstandard compressed payload. * A catalog has been added to rpm.s7i. This is necessary allow writing to an RPM archive. Several functions have been rewritten to use the catalog instead of file numbers. * Checks for the payload digest and for file digests have been added. * Several RPM tags have been added and the function to write a tag name has been renamed to rpmtagName(). * The functions getStringArray(), createMinimumOfCatalog(), createRegister(), getInt(), readCatalogEntry(), updateIndexEntry(), updateMetadata(), doSettings(), getDigest(), checkPayloadDigest(), archiveFilePath(), getOwner(), setOwner(), getGroup(), setGroup(), putFile() and mkdir() have been added. - The functions setOwner() and setGroup have been added to tar.s7i. - The library bitdata.s7i has been improved. Now it supports the type reverseBitStream and functions to create and read reverse bit streams. Reverse bit streams are used by the Zstandard compression. - The new exception INDEX_ERROR has been introduced. An INDEX_ERROR occurs, if an index is used to access an 'array', 'string', 'bstring' or 'ref_list' element beyond the elements that actually exist. Formerly this triggered a RANGE_ERROR.
2020-05-3114 Oct 2020 16:25 major feature: - The libraries tar.s7i, cpio.s7i and rpm.s7i have been improved such that the file system functions follow symbolic links (inside of the archive). - The library zip.s7i has been improved to support the functions setFileMode(), setMTime() and putFile(). - The library ar.s7i has been improved to allow UTF-8 file names and to support the functions setFileMode(), setMTime(), putFile() and removeFile(). - The library rpm.s7i has been improved to support a LZMA compressed payload. - The library cpio.s7i has been improved such that setFileMode(), putFile() and mkdir() work correct. - The library lzma.s7i has been fixed such that xz.s7i can handle uncompressed chunks in an XZ archive. A bug in the function length() has been fixed also. - The new library fileutil.s7i has been added. This library supports inserting and deleting areas in a file. The function copyFile, which copies data between open files, has been moved from file.s7i to fileutil.s7i. - The function truncate(), which changes the length of a file, has been added to file.s7i, external_file.s7i, clib_file.s7i, strifile.s7i and utf16.s7i. - The library iobuffer.s7i has been improved to allow switching between reading and writing (and vice versa) as long as seek() is called in between. The functions flush() and close() have been added and the functions seek(), tell() and moveLeft() have been improved. - The function deflate(), which deflates a string has been added to the library deflate.s7i. - The function moveLeft() has been improved in strifile.s7i and stritext.s7i. - The function timestamp1601 has been added to time.s7i. - The bas7.sd7 (basic interpreter) example program has been improved. Support for LINPUT statements, for the function RPT and for the string concatenation operator has been added. The predefined subprogram CHAR has been improved. Now PRINT statemens allow a colon (:) between strings to describe a line break. Now INPUT statements allow a colon (:) between input prompt and variable list.
2020-05-0214 Oct 2020 16:24 major feature: - As suggested by Zachary Menzies a detection of more modifier keys has been added. E.g.: KEY_SHIFT_LOCK and KEY_NUM_LOCK. These modifier keys have a state. The state of KEY_SHIFT_LOCK can be retrieved with buttonPressed(KEYBOARD, KEY_SHIFT_LOCK_ON). - Several new keys and key combinations such as KEY_PRINT, KEY_PAUSE, KEY_ALT_LEFT and KEY_SFT_MENU have been added to keybd.s7i. Existing definitions in keybd.s7i have been refactored. Key names in keydescr.s7i have been updated. - The program gkbd.sd7 has been improved to show the new capabilies of the keybord interface. - The bas7.sd7 (basic interpreter) example program has been improved. Support for the predefined subprograms CHAR, CLEAR, COLOR, HCHAR, KEY, SCREEN and VCHAR and for the function SEG has been added. - The bitmap font font8x8 has been added. This is a font with 8x8 pixel used by the TI-99/4A homecomputer. - The functions line() and column() have been added to pixmap_file.s7i. - The function replace1() has been added to string.s7i. - In the manual the chapters about types and the keyboard have been improved. - The compiler has been improved to link database libraries only if they are needed. - The compiler has been improved to use builtin functions of the C compiler (if available) to do integer overflow checks. This reduces the runtime of the xz (lzma2) decompression by 4 (measured with gcc and valgrind, when decompressing a binary Seed7 package). - The compiler has been improved to use a better approach to test for integer overflow of addition and subtraction, if no builtin functions are available. This reduces the runtime of the xz (lzma2) decompression by 0.8 (measured with gcc and valgrind, when decompressing a binary Seed7 package). - The compiler has been improved to optionally suppress the generation of checks for integer division by zero with the option -sd.
2019-04-0514 Oct 2020 16:22 major feature: - The new library xz.s7i has been added. This library supports XZ compressed files. - The new library lzma.s7i has been added. This library supports LZMA compressed files. - The library rpm.s7i has been improved to support an XZ compressed payload. - The library tar_cmds.s7i and the program tar7.s7i have been improved to support XZ and LZMA compressed tar archives. - The library zip.s7i has been improved to support Unicode file names. - As suggested by Zachary Menzies a detection of modifier keys has been added. E.g. buttonPressed(KEYBOARD, KEY_SHIFT). Additionally several new key combinations such as KEY_SFT_MOUSE1 and KEY_CTL_PAD_CENTER have been added to keybd.s7i. - The program gkbd.sd7 has been improved to show the new capabilies of the keybord interface. - Interpreter and compiler have been improved, to write a compile time error, if a numerical escape sequence in a string or char literal is too big. - The compiler has been improved to omit overflow checks for the dividend of the mod operator, if the divisor is a power of two. This reduces the runtime of the xz (lzma2) decompression by 2.3 (measured with gcc and valgrind, when decompressing a binary Seed7 package). - The compiler file comp/intrange.s7i has been added. This file defines the function getIntRange(), which computes the range of possible results for several operators (e.g.: div, rem, mdiv, mod, ) and functions (e.g.: sqrt, length, pos, rand, log). - The compiler has been improved to use the function getIntRange() to omit overflow checks for addition, subtraction, multiplication and left shift of integer values. This reduces the runtime of the xz (lzma2) decompression by 0.4 (measured with gcc and valgrind, when decompressing a binary Seed7 package). - In the compiler the code generation for the operators div, rem, mdiv, mod, * and
2019-03-0814 Oct 2020 16:20 major feature: - The new library cpio.s7i has been added. This library supports cpio archive files. - The new library rpm.s7i has been added. This library supports rpm archive files. - The new library ar.s7i has been added. This library supports ar archive files. - The new library subfile.s7i has been added. This library allows to open a part of an existing file as read only file. - The new library filebits.s7i has been added. This library defines file mode bits used by archive file systems. - The libraries bin32.s7i and bin64.s7i have been improved to support case statements for the types bin32 and bin64. - The tarHeader element 'size' has been renamed to 'fileSize' in tar.s7i and tar_cmds.s7i. - Tests for the operator 'conv' and for the functions compare(), str(), float(), trunc() and round() have been added to chkflt.sd7. - The program chkccomp.c has been improved to determine the values MINIMUM_TRUNC_ARGUMENT and MAXIMUM_TRUNC_ARGUMENT. - Definitions of MINIMUM_TRUNC_ARGUMENT and MAXIMUM_TRUNC_ARGUMENT have been added to cc_conf.s7i. - The compiler (s7c) has been improved (in comp/flt_act.s7i) such that the actions FLT_TRUNC and FLT_ROUND do the correct check for the exception RANGE_ERROR. - The database driver sql_oci.c has been improved to support the types BINARY_FLOAT and BINARY_DOUBLE. - Tests for FLOAT and DOUBLE fields have been added to chkdb.sd7. - A definition of the constant GZIP_MAGIC has been added to gzip.s7i. - In file.s7i and iobuffer.s7i the functions hasNext() and length() have been changed to use an inout parameter for the file. This fixes a problem in compiled programs with some file systems where also an inout parameter is used for the file. - The file db_oci.h has been improved to define SQLT_BFLOAT, SQLT_IBFLOAT, SQLT_BDOUBLE and SQLT_IBDOUBLE. - In fltlib.c the functions flt_trunc() and flt_round() have been improved to do the correct check for the exception RANGE_ERROR.
2019-02-0914 Oct 2020 16:19 major feature: - The new database driver sql_tds.c has been added. This driver uses the Tabular Data Stream (TDS) protocol to transfer data between database server and client. TDS is used by SQL Server and Sybase. This driver allows the connection to a SQL Server database from Linux. - The new library db_prop.s7i has been added. This library provides a collection of database properties. - The example program chkdb.sd7 has been improved: * Tests with comments in sql statements have been added. * Tests that fetch boolean values from numeric fields have been added. * Tests for date, time, datetime and timestamp fields have been added. - In the library time.s7i the function time() has been improved, to accept more variants of the ISO 8601 time and date format including variants with a time zone. - The interpreter (s7) has been improved to write the error message of a DATABASE_ERROR, if the exception is not catched. - In tim_rtl.c the function timUtcFromTimestamp() has been improved to work without calling gmtime() or gmtime_r() or gmtime_s(). Now the function always works with a 64-bit signed timestamp. Gmtime() uses time_t, which can be 32-bit or 64-bit and it can be signed or unsigned. - In tim_rtl.c the function timToTimestamp() has been improved to work without calling mkutc(). This way the function always works with a 64-bit signed timestamp. Mkutc() is also defined in tim_rtl.c and it uses the system dependend type time_t. - In tim_rtl.c the functions timToOsTimestamp(), assignTime() and dateFromDaysSince1900() have been added and the functions timFromBigTimestamp() and timToBigTimestamp() have been removed. - In exec.c the functions par_restore() and loc_restore() have been improved to free unneeded memory, in case an exception has been raised. - In executl.c the function destroy_local_object() has been improved to optionally ignore exceptions.
2019-12-2914 Oct 2020 16:15 major feature: - Spelling corrections have been done in several files. Many thanks go to Jens Schleusener, for sending a source code misspelling report from Fossies. - The memory management has been improved: * In exec.c the functions res_restore() and exec_action() have been improved to free unneeded memory, in case an exception has been raised. * In prclib.c the functions prc_block(), prc_block_catch_all() and prc_block_otherwise() have been improved to free the fail_expression, in case an exception has been caught. * In numutl.c the function getDecimalBigRational() has been improved to free the temporary string. * In sql_rtl.c the function sqlColumnBigRat() has been improved to free the old values of numerator and denominator. - In sql_base.s7i the function openDatabase() with DB_ODBC and dbPath has been improved to use a DSN (data source name), if colon and slash are missing. E.g.: openDatabase(DB_ODBC, "anyDsn", "test", "test") - The compiler has been improved to support the action PRC_HEAPSTAT. - In flistutl.c the functions heapStatistic() and check_heap() have been improved to consider processes, sql functions, databases, prepared statements and fetched data. The function heap_statistic() has been renamed to heapStatistic(). - In sql_cli.c the functions sqlColumnBigInt(), sqlColumnBigRat(), sqlColumnBStri(), sqlColumnFloat() and sqlColumnStri() have been improved to check, if the length returned by the database is greater than the buffer_length. In this case a DATABASE_ERROR is raised. - In sql_cli.c the function setDecimalBigRat() has been improved to convert integers to a string without decimal point. - The function SQLGetFunctions() has been removed from db_odbc.h, sql_cli.c and the makefiles (variable OBJCOPY_PARAMS). - In sql_cli.c the element SQLDescribeParam_supported has been removed. Instead the function pointer of SQLDescribeParam is checked and the result of SQLDescribeParam() is compared with SQL_SUCCESS.
2019-12-1514 Oct 2020 16:13 major feature: The database libraries sql_srv.c and sql_cli.c have been improved to allow the connection to a SQL Server database from Linux. The library libtdsodbc.so is used to do the actual communication with the database. - The build system of Seed7 has been improved. Logic regarding X11, ncurses and the databases has been moved from the makefiles to chkccomp.c. - The build for Linux has been improved to work even if essential header files (for X11 or ncurses) are missing. This should only be used, if it is impossible to install the development packages of X11 or ncurses. - The example program chkdb.sd7 has been improved to do tests for SQL Server. - In the FAQ the explanation of "What is necessary to compile Seed7 with database connections", has been improved. - In chkccomp.c the functions findIncludeFile(), findStaticLib(), findLinkerOption(), listDynamicLibs() and determineConsoleDefines() have been added. - In chkccomp.c the functions determineEnvironDefines(), determineStatFunctions(), determineX11Includes(), determineMySqlDefines(), determineSqliteDefines(), determinePostgresDefines(), determineOdbcDefines(), determineOciDefines(), determineFireDefines(), determineDb2Defines(), determineSqlServerDefines(), determineIncludesAndLibs() and main() have been improved. - The files fwd_term.c and fwd_term.h have been added. The functions in fwd_term.c forward calls to a shared terminfo library. - The files con_inf.c, kbd_inf.c, kbd_poll.c, trm_cap.c and trm_inf.c have been improved to work with fwd_term.c and fwd_term.h. - The file fwd_x11.c has been added. The functions in fwd_x11.c forward X11 calls to a shared X11 library. Fwd_x11.c is used, if it is not possible to link to a static X11 library. - The file x11_x.h has been added. This file is used, if no X11 include file can be found. - The files drw_x11.c and gkb_x11.c have been improved to work with x11_x.h and x11_x.h. - The makefiles have been adjusted to work with the new build system.
2017-03-2829 Mar 2017 14:14 major feature: - A chapter about signals has been added to the manual. - The handling of ctrl-c (respectively the signal SIGINT), when s7 or s7c are used with the option -ts, has been improved: - A dialog offers several possibilities: Continue, terminate, trigger SIGFPE or raising an exception. - If the program was waiting for an input at the console the input can be entered again. - Under windows signal handler and the program that waits for an input are synchronized now. - The library aes.s7i with AES (Advanced Encryption Standard) cipher support has been improved to support key lengths of 192 and 256 bits. - The library tls.s7i has been improved to support the cipher suits TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256 and TLS_RSA_WITH_AES_256_CBC_SHA256. - The performance of the function bigMultAssign in big_rtl.c has been improved by a factor of 22 (measured with gcc and valgrind when big1 := 123456789_**123456; big1 *:= 123456789_**123456; is computed). Now Karatsuba multiplication is used to compute *:= . - The functions wildcardMatch and findMatchingFiles have been moved from cli_cmds.s7i to the new library wildcard.s7i. - The function flush has been added to pixmap_file.s7i. - The signal handling of interpreted and compiled programs has been unified. Now the signal handling is done in sigutl.c. - Sigutl.c has been moved from the library s7_comp.a to the run-time library seed7_05.a. - Code to generate signal handling functions has been removed from s7c.sd7. - The functions kbdKeyPressed and kbdGetc in con_win.c have been rewritten to use Win32 functions (PeekConsoleInputW and ReadConsoleInputW) instead of functions from conio.h (kbhit and getch). The include directive for conio.h has been removed. - Code to use conio.h has been moved from con_win.c to con_con.c. - In fil_win.c the function stdinReady has been added and calls of kbhit have been replaced by calls of stdinReady. The include of conio.h has been removed.
2017-03-0529 Mar 2017 14:09 major feature: - The performance of the function bigIPow in big_rtl.c has been improved by a factor of 15 (measured with gcc and valgrind when bitLength(123456789_**123456) is computed). Now Karatsuba multiplication and Karatsuba squaring is used to compute the power. - The performance of the function uBigMult in big_rtl.c has been improved by 22 (measured with gcc and valgrind). - The compiler has been improved to optimize expressions like: stri := stri .... stri := stri pos .. ; stri := lower(stri); stri := upper(stri); The optimization avoids an unnecessary copy of the string result of the right hand side expression. - The code generated by the compiler for the action STR_FOR has been improved. Now correct code is generated, when the for-statement loops over a string expression. - The library seed7_05.s7i has been improved to support if-statements with omitted statement after the keyword 'then'. - The functions getFile and putFile have been added to osfiles.s7i. - The bas7.sd7 (basic interpreter) example program has been improved. Support for the commands FILES and LOAD has been added. - Testcases for the power operator (**) and the operators div, rem, mdiv and mod have been added to chkbig.sd7. - Testcases for the new string optimizations done by the compiler have been added to chkstr.sd7. - Interpreter and compiler have been improved to support the action PRC_IF_NOOP. - The new library http_response.s7i has been added. It contains support for HTTP responses. - The comanche webserver has been improved to work with the new library http_response.s7i. - In big_rtl.c the functions bigIPow and bigIPowN have been improved to use uBigSquareK and uBigMultK instead of uBigSquare and uBigMultIntoHelp. - In big_rtl.c an improved version of uBigDigitMult has been added and an older deactivated (but faster) version of uBigMult has been reactivated. - In str_rtl.c the function strHeadTemp has been improved to avoid a heap corruption for a strange corner case.
2017-01-2929 Jan 2017 17:11 major feature: - The new library filesys.s7i has been added. It defines the interface fileSys. Files of TAR, ZIP and JAR achives and files from FTP and the operating system can be accessed via the fileSys interface. - The libraries tar.s7i, zip.s7i, ftp.s7i and osfiles.s7i have been adjusted to implement the new interface fileSys. - Definitions of the types fileType, filePermission and fileMode have been moved from osfiles.s7i to the new library filesys.s7i. - A definition of the file system osFiles has been added to osfiles.s7i. - In ftp.s7i the interface ftpFileSys has been added. This interface extends fileSys with the functions listDir, getActiveMode, setActiveMode, getAsciiTransfer and setAsciiTransfer. - The functions retrieve and store have been removed from ftp.s7i and the function open (to open a file) has been added. - The new library ftpserv.s7i has been created. This library allows, that the backend of an FTP server is also a file system. - The functions setUpHead, tarTell, tarXtract and tarCreate have been moved from tar.s7i to the new library tar_cmds.s7i. - The conversion functions bin32, bin64 and float have been added to bin32.s7i and bin64.s7i. This functions convert values between float and bin32 respectively bin64. - The functions getBitLsb and getBitsLsb have been added to bitdata.s7i. This functions read bits from a file in the direction from LSB (least significant bit) to MSB (most significant bit). - The operator := has been added to the libraries bitsetof.s7i and bitset.s7i. - The type void has been improved to allow writing a void value. This allows that calc7.sd7 can execute procedures. - The new library inflatefile.s7i has been added. It allows to uncompress data from a file with the Inflate algorithm. - A test of the tar header checksum has been added to tar.s7i. - A support for long link paths has been added to tar.s7i. - Several functions in zip.s7i have been improved. - The function timestamp1601ToTime has been added to time.s7i.
2016-12-3131 Dec 2016 18:07 major feature: - The function toArray has been added to the libraries bitset.s7i, bitsetof.s7i and hashsetof.s7i. This function creates an array with all values from a given set. - Experimental functions to access TAR and ZIP archives as file system have been added to tar.s7i and zip.s7i. This is work in progress, so the API might change. - The compiler has been improved to work correctly with a C++ compiler backend (Now it uses strRaiseError insead of intRaiseError) for the code generated for BIN_RADIX and INT_RADIX. - The compiler has been improved to use sigaction(), when available (HAS_SIGACTION is TRUE). - The compiler has been improved to reactivate the signal handler, when necessary (SIGNAL_RESETS_HANDLER is TRUE). - Testcases for the parse function with whitespace and control characters have been added to chkbig.sd7. - in big_gmp.c the functions bigParse and bigParseBased have been improved, to raise RANGE_ERROR when whitespace characters are in the string. - The configuration values HAS_SIGACTION and SIGNAL_RESETS_HANDLER have been added to cc_conf.s7i. - The program chkccomp.c has been improved to define SIGNAL_RESETS_HANDLER. - The function checkMoveDirectory has been removed from chkccomp.c. - In several files the literal 8 has been replaced by CHAR_BIT, when 8 refers to the number of bits is a char. - Several integer literals have been replaced by defined constants. - Documentation comments have been added or improved in bitset.s7i, bitsetof.s7i, hashsetof.s7i, cc_conf.s7i, ftp.s7i, tar.s7i, zip.s7i, arrlib.c, arr_rtl.c, big_rtl.c, conlib.c, dll_unx.c, dll_win.c, fillib.c, fil_rtl.c, heaputl.c, hshlib.c, hsh_rtl.c, numlit.c, numutl.c, pcs_unx.c, pcs_win.c, pol_dos.c, pollib.c, pol_sel.c, pol_unx.c, sctlib.c, setlib.c, set_rtl.c, str_rtl.c and typlib.c.
2016-12-0411 Dec 2016 21:49 major feature: - A description, how compiler optimizations can reduce the potential of integer overflow, has been added to the manual. - Documentation comments have been improved in cc_conf.s7i, integer.s7i, int_rtl.c, stat_win.c and tim_win.c. - The compiler has been improved to optimize expressions, where several terms are added or subtracted in combination with the functions succ or pred. It is possible to combine adjacent constant terms at compile time. This simplifies overflow checks. - The compiler has been improved to optionally generate programs, that trace function calls. This is activated with the option -tf. - Checks have been added to chkint.sd7, where several terms are added in combination with the functions succ or pred. - The functions wstati64Ext (in stat_win.c) and alternate_utime (in tim_win.c) have been improved to avoid the strange time adjustments of windows for Daylight Saving Time: For the same file different times are retrieved respectively set in summer and winter. Now the times do not depend on the time when they are retrieved or set. - In stat_win.c a check for wildcards in a path has been removed from wstati64Ext. - The performance of dirRead in dir_rtl.c has been improved by 10 (measured with gcc and valgrind). A smarter check for the directories . and .. reduces the CPU time used. - In cmd_rtl.c the functions remove_dir and copy_dir have been improved with a smarter check for the directories . and .. to reduce the CPU time used. - The function getSearchPath in cmd_rtl.c has been improved to work correctly, when there is no environment variable named PATH. - Definitions of macros to check the st_mode field of struct stat (e.g. S_ISDIR, S_ISREG, etc.) have been moved from fil_rtl.h to stat_drv.h. - The program chkccomp.c has been improved to work correct, when C compiler options are separated by linefeeds ( n). In this case the linefeeds are replaced by spaces. The linefeeds are used in cc_conf.s7i to allow the definition of SYSTEM_DB_LIBS as array.
2016-10-3111 Dec 2016 21:44 major bugfix: - The examples about multiple dispatch in the FAQ and in the manual have been changed. - In dir_win.c the functions opendir and wopendir have been improved to work correctly, when a volume is empty. FindFirstFile returns INVALID_HANDLE_VALUE, when the path refers to an empty volume (a directory that does not contain the . and .. directories). After FindFirstFile fails GetFileAttributesEx is used to recognize empty volumes. - In stat_win.c the function wstati64Ext has been improved to recognize empty volumes correctly. Now GetFileAttributesEx is used instead of FindFirstFile to get information about a file. - The function openVolumeList has been moved from cmd_win.c and cmd_unx.c to dir_win.c. - The definition of volumeListType has been moved from cmd_drv.h to dir_win.h. - In str_rtl.c the function strAppendN has been improved to work correctly, when an appended string is identical to the destination or a slice of it. There was already code to handle this case, but this code could access freed memory in rare situations. - The makefiles mk_nmake.mak and mk_msvc.mak have been changed to include the file 'macros' before the macro SYSTEM_DB_LIBS is used. - Rand functions have been added to bin32.s7i and bin64.s7i. - The compiler has been improved to optimize the float shift operators . - Documentation comments have been improved in float.s7i, integer.s7i, osfiles.s7i, big_gmp.c, big_rtl.c, bstlib.c and bst_rtl.c.
2016-10-0211 Dec 2016 21:37 minor feature: - Definitions of float shift operators have been added to float.s7i (A B is equivalent to A / 2.0 ** B). - Checks for the operators have been added to chflt.sd7. - Interpreter and compiler have been improved to support the primitiv actions FLT_LSHIFT and FLT_RSHIFT. - The example program find7.sd7 has been added. This program is an utility to search for files and file contents. - Documentation comments have been added to arrlib.c, biglib.c, blnlib.c, bstlib.c, fillib.c, pcslib.c, prclib.c, prglib.c and strlib.c.
2016-08-3113 Sep 2016 12:32 major feature: - The Seed7 runtime library has been improved to allow paths longer than PATH_MAX (260) characters under Windows. - The program sydir7.sd7 has been improved. Now it is avoided to copy a file, when source and destination differ only by date. The option -c has been added. With -c the source is copied and files that are missing in the source are removed from the destination. - The function readVolumeName in dir_rtl.c has been improved to allow extended length paths (This paths exist under Windows and have a prefix of ? ). - The functions opendir and wopendir in dir_win.c have been improved to allow paths longer than 260. - In the library seed7_05.s7i the undocumented function xalloc has been removed. - The function printArgv has been added to arr_rtl.c to improve the logging. - The program chkccomp.c has been improved to write settings to always use the directory functions from dir_win.c under Windows. - The function adjustCwdForShell has been added to cmd_rtl.c. This function sets the current working directory to something acceptable by cmd.exe. - In stat_win.c the function wstati64 has been renamed to wstati64Ext and improved to call the original stat function, when possible. - The new file stat_drv.h has been added. In this file a prototype of wstati64Ext is defined when necessary. - The program wrdepend.c has been improved to work correctly, when the INCLUDE_OPTIONS macro contains newline characters. - Calls of logFunction have been added to arr_rtl.c, cmd_rtl.c, dir_rtl.c, executl.c, fil_rtl.c, pcs_win.c, runerr.c, sctlib.c, sigutl.c, stat_win.c and striutl.c. - Calls of logError have been added to arrlib.c, blnlib.c, cmd_rtl.c, conlib.c, dir_win.c, drwlib.c, enulib.c, fil_rtl.c, itflib.c, lstlib.c, prclib.c, reflib.c and striutl.c.
2016-05-3112 Jun 2016 20:38 major feature: - Documentation comments have been added or improved in many files. - The compiler (s7c) has been improved to start C compiler and linker direct and not via a shell (except when the compiler must be started with a script). - The program chkccomp.c has been improved to use consecutive numbers for test program files. - The program chkccomp.c has been improved to show the progress of the tests done. - The experimental function startProcess, with files to redirect, has been added to process.s7i. - The functions childStdIn, childStdOut and childStdErr have been added to process.s7i. - The function shellParameters has been added to shell.s7i. - The function noEmptyStrings has been added to seed7_05.s7i. - A conv operator to convert an interface object to a specific implementation type has been added to seed7_05.s7i. - The compiler (s7c) has been improved to support the new conv operator defined in seed7_05.s7i. - In cc_conf.s7i the configuration values CC_OPT_DEBUG_INFO, CC_FLAGS, LINKER_FLAGS, SYSTEM_LIBS, SYSTEM_CONSOLE_LIBS, SYSTEM_DRAW_LIBS and SYSTEM_DB_LIBS have been changed to be arrays of strings instead of strings. - In cc_conf.s7i the configuration values CALL_C_COMPILER_FROM_SHELL, CC_ERROR_FILDES, REDIRECT_FILDES_1, REDIRECT_FILDES_2 and NULL_DEVICE have been added. - In cc_conf.s7i the configuration value REDIRECT_C_ERRORS has been removed. - Interpreter and compiler have been improved to support the actions PCS_CHILD_STDERR, PCS_CHILD_STDIN, PCS_CHILD_STDOUT, FIL_PIPE and FIL_OPEN_NULL_DEVICE. - The function analyzeProg in analyze.c has been improved to have less usages of the global variable prog. - The functions in chkccomp.c have been changed to static functions. - The program chkccomp.c has been improved to define POPEN_SUPPORTS_CLOEXEC_MODE, FOPEN_SUPPORTS_CLOEXEC_MODE, HAS_FCNTL_SETFD_CLOEXEC and HAS_PIPE2. - The function filPipe has been added to fil_unx.c and fil_win.c.
2015-11-2930 Nov 2015 17:13 major feature: - 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.
2015-11-1010 Nov 2015 23:07 minor feature: - 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.
2015-10-2929 Oct 2015 23:07 cleanup: - 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.
2015-10-1111 Oct 2015 21:49 major feature: - 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.
2015-09-2727 Sep 2015 21:40 major feature: - 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.
2015-09-1414 Sep 2015 21:49 cleanup: - 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 . 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. - Several deprecated functions have been removed from Seed7 libraries. - The macros 'likely' and 'unlikely' have been added to functions in many C files. - The definition of the macro logFunction in common.h has been improved to write the file name. - Calls of logFunction have been added to several C files. - 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. - 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. - Several definitions have been changed to use a static storage class.
2015-08-2324 Aug 2015 20:25 major feature: - 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 several files. - Checks for err_info != OKAY_NO_ERROR have been replaced by checks for pointer variables beeing NULL in several files. Since references to err_info are used this variable cannot be placed into a register.
2015-08-0204 Aug 2015 21:50 minor feature: - 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.
2015-07-2002 Aug 2015 07:19 documentation: - 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 and 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.
2015-07-0506 Jul 2015 20:24 major feature: - 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 .
2015-06-1414 Jun 2015 21:18 minor feature: - 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.
2015-06-0101 Jun 2015 20:02 minor feature: - 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.
2015-05-1717 May 2015 14:54 cleanup: - 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.
2015-05-0303 May 2015 20:22 major feature: - 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.
2015-04-1919 Apr 2015 16:09 major feature: - 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 binary modes, or with text modes. - 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. - 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 an intermediate list of buffers. - 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 an intermediate list of buffers. - 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 exception functions have been improved.
2015-04-0505 Apr 2015 12:11 major feature: - A cache for client sessions has been added to tls.s7i. This allows that a TLS connection can be resumed (without a new negotiation of the security parameters). - The comanche webserver has been improved to keep connections open for 15 seconds. - The functions compare and hashCode for the type socketAddress have been added to sockbase.s7i. - A new variant of openServerTls, with a certAndKey parameter, has been added to tls.s7i. - The functions validityType, createX509Cert, certAndKey and selfSignedX509Cert have been added to x509cert.s7i. - The constant stdRsaKeyPair has been added to pkcs1.s7i. - The functions localAddress, peerAddress and ord have been added to socket.s7i. - In duration.s7i the functions YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS and MICRO_SECONDS have been improved to normalize the duration value. - The functions sendGet (gethttp.s7i) and sendHttpResponse (comanche.sd7) have been change to send the request/response with one write statement. - The library tls.s7i has been improved to accept client-hello and server-hello messages with extensions. - The functions openTlsSocket and openServerTls (in tls.s7i) have been improved to avoid exceptions, when an alert message is received or a socket is closed. - In tls.s7i the function write has been changed to send long strings with several messages. - Tests for the operators parse and radix and for the function bigInteger have been added to chkbig.sd7. - The functions openHttpSession, closeHttpSession, processHttpRequest and cleanSessions have been added to comanche.sd7. - Trace output and verbose exceptions have been added to various functions in big_rtl.c, soc_rtl.c, int_rtl.c and str_rtl.c. - The functions striAsUnquotedCStri and bstriAsUnquotedCStri have been added to striutl.c. - In traceutl.c the functions prot_stri_unquoted and prot_bstri have been changed to use striAsUnquotedCStri and bstriAsUnquotedCStri respectively.