Seed7 20241118

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 alpha

Recent Releases

2024111830 Nov 2024 04:45 minor feature: A new Seed7 installer for Windows (seed7_05_20240812_win.exe) has. Been released. This installer correctly identifies if the Windows Operating system is 32- or 64-bit. Many thanks to Bruce Axtens And Simon Dash for reporting errors caused by 32-bit Seed7 Installations (running out of memory with bigfiles.sd7 and a Failing test with chkarr.sd7). In idxarray.s7i the type 'array integer baseType' has been. Mapped to 'array baseType'. Many thanks to Simon Dash for Reporting that the use of 'array integer baseType' triggered Errors. In httpserv.s7i the function getHttpRequest() has been improved to. Assure that something can be read from the socket without waiting. In array.s7i size arrays have been improved to support. For-each-loops. In bitdata.s7i, the types lsbOutBitStream and msbOutBitStream have. Been introduced. These types support the functions putBit(), PutBits(), length(), truncate(), flush() and getBytes(). The function putBits(lsbOutBitStream) is 22 faster than the. Deprecated function putBitsLsb(). The function putBits(msbOutBitStream) is 24 faster than the. Deprecated function putBitsMsb(). Tests for lsbOutBitStream and msbOutBitStream have been added to. Chkbitdata.sd7. The tests check putBit(), putBits(), length() and Truncate(). Tests have been added to chkbitdata.sd7. The tests check the. Addition of zero bit sequences to a bit stream. The library lzw.s7i has been improved to use a lsbOutBitStream or a msbOutBitStream for the LZW compression. In bitdata.s7i the types lsbBitStream and msbBitStream and the. Functions openLsbBitStream and openMsbBitStream are deprecated. The types lsbInBitStream and msbInBitStream and the. Functions openLsbInBitStream and openMsbInBitStream should be Used instead. Support for Huffman encoding has been added to the huffman.s7i. Library. The libraries ccittfax.s7i, gzip.s7i, huffman.s7i, inflate.s7i. Lzw.s7i and zstd.s7i have been changed to replace the deprecated Type lsbBitStream with lsbInBitStream. Th
2024081202 Oct 2024 02:45 minor feature: A new Seed7 installer for Windows (seed7_05_20240630_win.exe) has been released. This installer works without a previously installed gcc. Many thanks to Simon Dash for reporting that the old Seed7 installer for Windows was aborting. The declaration processing for functions with parameters in name.c has been improved to leave original_name_list unchanged. Many thanks to Simon Dash for reporting an error which happened with array templates. The run-time library has been improved to reliably raise FILE_ERROR if gets(), getln() or getwd() are called with a write only file. Many thanks to Joe Thompson for pointing out that the chkexc.sd7 test failed with MinGW (GCC 14.1). The test of _wrename() and the definition of os_rename_orig has been removed from chkccomp.c. Many thanks to Liam O'Brien for pointing out that chkccomp.c could not define os_rename_orig on a new Windows 10 PC. The library jpeg.s7i has been improved to use Exif data to change the orientation of an image if necessary. Many thanks to Johannes Gritsch for pointing out that pv7 displayed some images with the wrong orientation. The new library elf.s7i has been added. This library supports the ELF executable and link format. The new library pbm.s7i has been added. This library supports the PBM (portable bitmap) image format in the ASCII and the binary version. The new library pgm.s7i has been added. This library supports the PGM (portable graymap) image format in the ASCII and the binary version. Support for the ASCII PPM (portable pixmap) image format has been added to the library ppm.s7i. The existing binary PPM function has been refactored. The library imagefile.s7i has been improved to support PBM, PGM and PPM image files in the ASCII and the binary version. The new library pixelimage.s7i has been added. This library defines the type pixelImage (2D array of pixels) and functions to convert (getPixmap() and getPixelImage()), rotate and mirror pixel images. The type pixelImage is a 2D array with a
2024063001 Jul 2024 15:25 minor feature: Explanations about scanner functions and why some write statements. Raise RANGE_ERROR have been added to the FAQ. The new library json.s7i has been added. This library supports. Reading processing and writing JSON data. A JSON DOM is used to Store the JSON data. A test program for JSON functions (chkjson.sd7) has been added. The program calc7.sd7 has been improved to support JSON functions. The new library magic.s7i has been added. This library supports. Getting magic numbers (signatures) from strings and files. The new library basearray.s7i has been added. This library. Supports arrays with a minimum index. Tests for arrays with size or minimum index have been. Added to chkarr.sd7. A test program for scanner functions (chkscan.sd7) has been added. The Seed7 compiler (s7c.sd7) has been improved: - Support to compile dynamic functions with a type result has been. Added. The compilation of an array sort has been improved to avoid. Unnecessary copying of the array. The code generation for a size array index access has been. Refactored. The code generation for dynamic function calls has been. Refactored. The optimizations for array indexing have been improved. Interpreter and compiler have been improved to raise INDEX_ERROR. Instead of RANGE_ERROR if indexing into a hash map fails. Tests for INDEX_ERROR have been added to chkhsh.sd7. A function to sort an array in reverse order has been added to the. Library array.s7i. Tests for array assignment and array sort have been added to. Chkarr.sd7. The program chk_all.sd7 has has been adjusted to consider the. Changes in the test suite. In ar.s7i, cpio.s7i, rpm.s7i, tar.s7i, tar_cmds.s7i and zip.s7i. The function getFileMode has been improved to return only the Permission bits. In tar.s7i and zip.s7i the function setFileMode() has been. Improved to only change the permission bits. In ar.s7i, cpio.s7i, rpm.s7i, tar.s7i and zip.s7i the function. () has been changed to reset the file system to be empty. In ar
2024042930 Apr 2024 19:45 minor feature: The compilation of s7c with tcc has been. Many thanks to Cheap-Ad9743 for pointing out that compiling s7c with tcc failed. Chapters about hashes and templates have been added to the manual. The library hash.s7i has been improved to support hash table literals and the comparison of hash tables with = and . The new library scanjson.s7i has been added. This library supports scanning (reading) JSON (JavaScript Object Notation) symbols from strings and files. The experimental readjson.s7i library has been removed. The new library array.s7i has been added. This library supports arrays with a size. The minimum and maximum index of these arrays is encoded in the type. The functions minIdx(), maxIdx() and length() can be used with an array or the type as parameter. The times operator can be used with: arrayType times elementValue. The library msgdigest.s7i has been refactored to use size arrays. The reduction in run-time for some functions is md.
2024032223 Mar 2024 20:05 minor feature: The compiler has been to be able to compile itself without. Using the X11 library. Many thanks to Pietro Cerutti for pointing Out that compiling s7c.sd7 under FreeBSD failed. Now the function ColorPixel() is only used if there is at least one non-empty Window object. In drw_x11.c the function drwRgbColor() has been improved to raise GRAPHIC_ERROR if it is called without a successful drawInit(). Many thanks to Zachary Menzies for pointing out that the. Compilation of the Seed7 compiler on AlmaLinux 9 triggered a Segmentation fault. In tim_win.c the function timAwait has been improved to always. Raise RANGE_ERROR on february 29th of a non-leap-year. Many thanks to Joe Thompson for pointing out that the chktime.sd7 test failed. With MinGW (gcc 8.1). The program chkccomp.c has been improved to Define the macro CHECK_NON_LEAP_YEAR_FEBRURARY_29 in version.h if SystemTimeToFileTime() allows february 29th of a non-leap-year. The file readjson.s7i with experimental functions to read JSON. Files has been added. Thanks to Bruce Axtens for driving the Attention towards reading JSON. The program make7 hase been improved to support commands en in backticks. The change has been made in cli_cmds.s7i. The Seed7 compiler (s7c.sd7) has been improved: - A heap corruption is avoided if the RHS (right hand side) of an. Assignment changes the target variable. E.g.: AVariable := changeParameter(aVariable); This has been for the types string, bstring, bigInteger. Bitset, array, clib_file, struct, window, pointList, SqlStatement, interface, ref_list, process, program, and Database. The generated code to handle assignments has been improved in. Arr_act.s7i, big_act.s7i, bst_act.s7i, drw_act.s7i, fil_act.s7i, Itf_act.s7i, pcs_act.s7i, pol_act.s7i, prg_act.s7i, rfl_act.s7i, Sct_act.s7i, set_act.s7i, sql_act.s7i and str_act.s7i. In inline.s7i the function process_inline_func() has been to define the result name. Now the inlining of a result. Expression works correctly. A test for
2024030102 Mar 2024 13:05 minor feature: Many thanks to Neal Collins for correcting the handling of double. Quotes in toCsvLine and for ing /./../ sequences in toAbsPath. Many thanks to Jules Amonith for ing a typo (Respose was used. Instead of response). Many thanks to Federico Ercole for helping with JavaScript. Now clicks on the button of a browser window can be. Processed in the program (as KEY_). Starting programs From HTML has been improved as well. A terminating program now Calls the JavaScript function reloadPage (defined in the HTML Document). The parser has been improved to stop parsing if the include of an. Essential file (seed7_05.s7i) fails. Many thanks to Dominik Dorn For reporting that a misspelled seed7_05.s7i triggered many Errors. The build of Seed7 has been to work if CreateSymbolicLinkW() is missing. Many thanks to Cheap-Ad9743 for pointing out that the. Build with tcc under Windows failed. The chapters about declarations, parameters, operating system. Access and graphics in the manual have been improved. In mahjong.sd7 the drawing of mahjong tiles has been improved. Now the tiles are correctly displayed in the browser as well. In lander.sd7 the drawing of the rocket has been improved. Now the rocket is correctly displayed in the browser as well. In osfiles.s7i the function cloneFile has been improved to copy. Symbolic links under Windows. FILE_ERROR is raised if cloneFile Cannot create a symbolic link. The functions bitLength and lowestSetBit have been added to. Bin32.s7i and bin64.s7i. Tests for bitLength and lowestSetBit have Been added to chkbin.sd7. The libraries pic_util.s7i, tiff.s7i and png.s7i have been. Improved to use mdiv instead of div if the divisor is a power of Two. Functions for the type pointList have been refactored in graph.s7i. And progs.s7i. Before pointList used bstring (BST_...) actions. Now pointList uses PTL_... actions. Conversion functions to convert between pointList and bstring have. Been added to graph.s7i. Definitions of PIXEL_ALPHA_MASK, PO
2023121731 Dec 2023 21:24 minor feature: - The FAQ has been improved. Many thanks to Liam O'Brien for creating a list suggested changes. Thanks for helping to improve Seed7 in general. - Support for symbolic links under Windows has been added: - Symbolic link reparse points and mount reparse points are both treated as symbolic links. - The interface does not distinguish between directory symbolic links and normal symbolic links. A normal symbolic link may refer to a directory and readDir(symlink) reads the directory contents (like it does under Linux/Unix/BSD). - The functions fileType() and fileTypeSL() have been improved to work under Windows like they do under Linux/Unix/BSD: - fileType() follows symbolic links and returns the file type of the final destination. - fileTypeSL() returns FILE_SYMLINK for symbolic links. For all other file types fileTypeSL() works like fileType(). - fileTypeSL() does return FILE_SYMLINK only if readLink() works correctly. - fileTypeSL() has been fixed to return FILE_DIR for the emulated root directory and FILE_ABSENT if the file path cannot be mapped to a system path. - The functions readLink(path) and readLink(path, ABSOLUTE) have been improved to read the symbolic links of Windows. The function readLink(path) can read relative and absolute symbolic links. Both functions can read dangling symlinks. The functions are implemented with DeviceIoControl(). If DeviceIoControl() is not available (HAS_DEVICE_IO_CONTROL is not defined), they raise FILE_ERROR. - The functions getFileMode(path), setFileMode(path), getOwner(path), setOwner(path), getGroup(path), setGroup(path) and readDir(path) have been improved to follow symlinks under Windows (like they do under Linux/Unix/BSD). - Owner and group of the emulated root directory is "root". - The function moveFile() has been improved to avoid following symlinks under Windows (like it does under Linux/Unix/BSD).
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.
2019-11-1720 Nov 2019 22:59 major feature: - Support for mice with forward and back button has been added to the Seed7 run-time library. Many thanks go to Zachary Menzies, for driving my focus towards mice with additional buttons. - Support for the C compiler from Visual Studio 2019 has been added. Many thanks go to Alexander Yu. Vlasov for pointing out compilation problems with Visual Studio 2019 and for investigating the problems. - Interpreter and compiler have been improved to support DB2 and SQL Server databases. - In the manual the chapter about the database abstraction API has been improved. - The compiler has been improved to optimize the function replace() (action STR_REPL). Special functions (strChRepl() and strChChRepl()) are used, if the searched or the replaced string consist of one character. This works even, if a character is converted to a string with the function str(). - Testcases for replace() have been added to chkstr.sd7. - The program bigfiles.sd7 has been improved to search for the biggest directories additionally to the biggest files. - The libraries keybd.s7i and keydescr.s7i have been improved to support KEY_MOUSE_FWD and KEY_MOUSE_BACK. - The library sql_base.s7i and the programs db7.sd7 and sql7.sd7 have been improved to support DB_DB2 and DB_SQL_SERVER. - In striutl.c the function stri_to_standard_path() has been improved, to do a smarter mapping from a DOS/Windows path to the Seed7 standard path representation. - In osfiles.s7i the functions makeParentDirs() and convDosPath() have been improved. Now convDosPath() and stri_to_standard_path() use the same algorithm to map from a DOS/Windows path to the Seed7 standard path representation. - The function strChChRepl() has been added to str_rtl.c. - The program chkccomp.c has been improved to define the macros REMOVE_REATTEMPTS, SETENV_ALLOWS_KEY_WITH_EQUALS_SIGN and GETENV_ALLOWS_KEY_WITH_EQUALS_SIGN. - The functions determineDb2Defines() and determineSqlServerDefines() have been added to chkccomp.c.
2019-10-2020 Nov 2019 22:56 major feature: - The support for Emscripten has been improved to allow the compilation of Seed7 programs. - Improvements have been done in sql_odbc.c to support the connection with a DB2 database. - Testcases for pos() and rpos() have been added to chkstr.sd7. - The compiler has been improved to optimize the functions pos() and rpos() (actions STR_POS, STR_RPOS, STR_CHPOS, STR_RCHPOS). - The program setwpath.c has been improved to work correct in more situations (E.g.: If no PATH variable exists, if the path to be added is a substring of an existing path, if the first path in the PATH variable is to be removed, if there is only on path in the PATH variable and this path is to be removed). - In fil.unx.c the function setupFiles() has been improved to mount the file systems for Emscripten and node.js with a better strategy. - In sql_odbc.c the function sqlStmtColumnName() has been improved to work with one call of SQLColAttributeW(), if the length of the column name is below a limit. Additionally a parameter of NULL as destination for the name has be replaced by a valid adress. The usage of NULL triggered an error with DB2. - The configuration value LINKED_PROGRAM_EXTENSION has been added to cc_conf.s7i. The linker produces a file with the extension defined by LINKED_PROGRAM_EXTENSION. Usually LINKED_PROGRAM_EXTENSION is identical to EXECUTABLE_FILE_EXTENSION. Except for Emscripten where, the value is ".js". - The makefiles mk_emccl.mak and mk_emccw.mak have been improved to define LINKED_PROGRAM_EXTENSION. - The compiler (s7c.s7i), the function getProgramName() in arr_rtl.c, the function cmdConfigValue() in cmd_rtl.c and the program chkccomp.c have been improved to use LINKED_PROGRAM_EXTENSION. - In chkccomp.c the function determineEnvironDefines() has been improved to determine, if getenv() works case sensitive. A definition of GETENV_IS_CASE_SENSITIVE, with a value of 0 or 1, is written to version.h. - The function getSearchPathDelimiter() has been added to cmd_rtl.c.
2019-09-1927 Sep 2019 06:18 major feature: - A chapter about the database abstraction API has been added to the manual. - In the manual the chapters about primitive actions and about the foreign function interface have been improved. - An explanation of the Seed7 installer and about the download of Seed7 have been added to the FAQ. - The new library ico.s7i has been added. This library supports the ICO image file format. - The library browser.s7i has been improved to be more robust regarding network events. - The database drivers have been improved to raise a DATABASE_ERROR, if the database library could not be found. The error message of the DATABASE_ERROR contains the name of the missing DLL respectively shared object library. - Documentation comments have been improved in 85 library/include files (*.s7i). Wrong usages of the word "when" have been replaced by "if". - Documentation comments have been improved in 96 C source files. Wrong usages of the word "when" have been replaced by "if". - Texts in 9 Seed7 programs (*.sd7) and in a lot of documentation files have been improved. Wrong usages of the word "when" have been replaced by "if". - A definition of SQL_DRIVER_NOPROMPT has been added to db_odbc.h. Many thanks go to Brett Senior for pointing out a fatal compilation error in sql_odbc.c, when compiling Seed7 version 2019-08-18 under Debian Linux. - The example program chkdb.sd7 has been improved to write better error messages. - In reflib.c the function ref_select() has been improved to work correct, if a derived struct overrides an element of the parent struct.
2019-08-1827 Aug 2019 12:45 major feature: - Interpreter and compiler have been improved to work correct, when a derived struct overrides an element of the parent struct. Many thanks go to Zachary Menzies, for reporting this error and for providing a test program. - In the FAQ the explanation, why Seed7 uses UTF-32, has been improved. An explanation of the database abstraction layer, which provides an database independent API, has also been added to the FAQ. - In the manual the chapter about the deprecated function removeAnyFile() has been replaced by a chapter about the function removeTree(). - The program db7.sd7 (Database Inspector) has been improved quote a table name from the catalog when doing a select. - The program sql7.sd7 has been improved to allow the execution of SQL statements from a file. The function getSqlStatement has been added, which reads a semicolon terminated SQL statement from a file. - The library tar.s7i has been improved to accept extended headers with meta data (PAX format) also when a tar file is opened as file system with openTar(). The function readMinimumOfHead has been improved to do this. - A code page for JIS X 0201 encoding has been added to charsets.s7i. - The program err.sd7 has been improved to contain test cases, where UTF-16 surrogate characters and non Unicode characters are written as Seed7 string escape sequences. - In sql_oci.c the function sqlOpenOci() has been improved to allow opening a database with host name, port and database name. This way a database can be opened without an entry in tnsnames.ora. The type connectDataRecord and the function setupConnectData() have been added to sql_oci.c. - The functions sqlOpenMy (in sql_my.c) and sqlOpenPost (in sql_post.c) have been improved to allow opening a database with host name, port and database name. Now host, port and dbName are parameters. Before the functions split the parameter dbName into host and database name. Specifying a port was not possible. - In sql_odbc.c the function sqlOpenOdbc() has been improved.
2019-07-1429 Jul 2019 16:45 major feature: - The library tls.s7i has been improved to support elliptic curve diffie hellman key exchange. - The new library elliptic.s7i has been added. This library supports elliptic curve cryptography (ECC). The library defines: * Several named curves, * Functions to add, double and multiply curve points. * Functions for fast multiplication with jacobian coordinates. * Functions to encode and decode curve points. * Functions to sign and verify messages with the ECDSA. - The functions emsaPkcs1V15Encoding, emsaPkcs1V15Decoding, rsassaPkcs1V15Encrypt and rsassaPkcs1V15Decrypt have been added to the library pkcs1.s7i. - In x509cert.s7i the function getAlgorithmIdentifier has been improved to accept algorithm identifiers without algorithm parameters. - A version of the function createX509Cert, that creates a certificate with keys for elliptic curve cryptography, has been added. - The new library showtls.s7i had been added. This library defines functions to show TLS messages. It can be used to debug tls.s7i. - The library tar.s7i has been improved to accept extended headers with meta data (PAX format). Now path and linkpath meta data is accepted. - A new version of the function bytes() has been added to bytedata.s7i. This function converts a bigInteger to a string of bytes with a given length. - Checks for the multiplication operators * and *:= with factors of 1 and -1 have been added to chkint.sd7. - Checks for the operator 'lpad0' have been added to chkint.sd7. - Checks for NaN have been added to chkflt.sd7. - In the compiler (in comp/const.s7i) the action FLT_MOD has been added to the list of pure function actions. - The compiler has been improved to optimize the actions FLT_REM (in comp/flt_act.s7i) and INT_LPAD0 (in comp/int_act.s7i). - A corner case of the multiplication operator *:= has been fixed in the compiler (process_const_int_mult_assign() in comp/int_act.s7i). The bug occurred in the overflow checking code, when an array element was multiplied with *:= -1.
2019-06-1012 Jun 2019 20:45 major feature: - The library float.s7i has been improved to support the float operators 'rem' (floating-point remainder) and 'mod' (floating-point modulo). - The program chkflt.sd7 has been improved to check floating-point literals and the new operators 'rem' and 'mod'. The tests for the operator ** have been improved also. - Compiler and interpreter have been improved to work correct, even when the C functions fmod(), exp(), ldexp(), frexp() and sqrt() do not work 100 correct. - The program chkccomp.c has been improved to detect weaknesses of numeric functions. These weaknesses happen when handling with NaN, Infinity or when other special cases occur. - A new version of the function timAwait() has been added to tim_unx.c. This function is used when AWAIT_WITH_NANOSLEEP is defined. - The makefiles mk_emccl.mak and mk_emccw.mak have been improved to define AWAIT_WITH_NANOSLEEP instead of AWAIT_WITH_SELECT. - Interpreter and compiler have been improved to support the actions FLT_MOD and FLT_REM. - In the compiler (in comp/flt_act.s7i) a corner case of the action FLT_IPOW (when CHECK_FLOAT_DIV_BY_ZERO is TRUE and the exponent is negative and the base is zero (0.0 or -0.0)) has been fixed. - The configuration values FLOAT_COMPARISON_OKAY, FMOD_FUNCTION_OKAY, EXP_FUNCTION_OKAY, LDEXP_FUNCTION_OKAY and FREXP_FUNCTION_OKAY have been added to cc_conf.s7i. The configuration values NAN_COMPARISON_OKAY and FREXP_INFINITY_NAN_OKAY have been removed. - The functions fltDecompose(), fltExp(), fltLdexp(), fltMod() and fltRem() have been added to flt_rtl.c. These functions are used, when the corresponding C functions frexp(), exp(), ldexp() and fmod() do not work 100 correct. - In flt_rtl.c the functions fltEq(), fltGe(), fltGt(), fltLe() and fltLt() have been improved. These improvements help, when the comparison of float or double values does not work 100 correct. - In flt_rtl.c the functions fltPow(), getMantissaAndExponent(), setMantissaAndExponent() and fltSqrt() have been improved.
2019-05-2312 Jun 2019 20:40 major feature: - In match.c the function substitute_params() has been fixed to copy parameters with expressions instead of calling do_create(). For expressions do_create() just creates a reference to the expression and this leads later to a double free of the expression. Many thanks go to Anton Lobach, for reporting this error and for providing a test program. - The library blowfish.s7i, with Blowfish cipher support, has been added. - The functions column() and line() have been added to the library console.s7i. - The bas7.sd7 (basic interpreter) example program has been improved. Support for the keyword ENDIF has been added. - The compiler (s7c.sd7) has been improved (in set_act.s7i) to optimize the expression card(bitset(number)). - The functions toBase and fromBaseToBigInt have been added to encoding.s7i. This functions encode and decode bigInteger numbers with a positional numeric system. - Conversion functions have been added to bitsetof.s7i and bitset.s7i. - Checks for the function card() have been added to chkset.sd7. - Interpreter and compiler have been improved to support the actions CON_COLUMN, CON_LINE, SET_CONV1, SET_CONV3, SET_SCONV1 and SET_SCONV3. The support for the actions SET_CONV and SET_SCONV has been removed. - The libraries bitsetof.s7i and bitset.s7i have been adjusted, to use the new actions. - In con_inf.c the function conWrite() has been improved to change the cursor position, when the characters ' n', ' r' and ' b' are written. - In con_win.c the function conCursor() has been improved, to hide the cursor, when it is called with FALSE. The function conOpen() has been changed, to set the cursor position to (1, 1) and to hide the cursor. - The functions conColumn() and conLine() have been added to con_rtl.c, con_inf.c, con_win.c, con_wat.c and con_emc.c. - In set_rtl.c the functions setIConv() and setSConv() have been improved. Now setIConv() raises RANGE_ERROR for negative numbers and setSConv() raises RANGE_ERROR, when a negative integer would be returned.
2019-05-0612 Jun 2019 20:36 major feature: - The utility program bigfiles.sd7 has been added. Bigfiles is an utility program to search for big files. This is useful, when the disk is almost full and files must be removed to get more space. - The utility program sydir7.sd7 has been improved. Now it supports the option -n, which assures that no changes are done. - The program db7.sd7 (Database Inspector) has been improved to write an error message, when reading the catalog of database tables fails. - The program chkbitdata.sd7 has been added. This program checks functions from the bitdata.s7i library. - In the FAQ the explanation, how Seed7 is compiled, has been improved. - The description of several conversion functions in the manual has been improved. - The function ripemd160 has been added to msgdigest.s7i. This function computes a message digest with the RIPEMD-160 algorithm. - The functions toBase58, fromBase58, toBase and fromBase have been added to encoding.s7i. This functions support Base58 encoding and similar other encodings with a positional numeric system. - The functions putBitLsb, putBitsLsb, getBitMsb, getBitsMsb, putBitMsb and putBitsMsb have been added to bitdata.s7i. This functions read and write bits from and to a file. - The new library leb128.s7i has been added. This library supports the conversion of integers to and from LEB128 encoding. LEB128 is a variable-length encoding for integers. It is used e.g. by the DWARF debug file format and by WebAssembly. - Tests for the functions leb128ToInt(), uLeb128ToInt(), leb128() and uLeb128() have been added to chkint.sd7. - The library make.s7i has been improved to avoid a makefile rule recursion. - The function hex2Bytes has been added to bytedata.s7i. This function converts a string with hexadecimal digits to a string of bytes. - The function reverse has been added to string.s7i and seed7_05.s7i. - The function tableNamesCommand has been added to sql_base.s7i. - Conversion functions have been added to char.s7i.
2019-04-0722 Apr 2019 13:03 major feature: - The program db7.sd7 (Database Inspector) has been improved to use a scrollable list of tables instead of radio buttons for the selection of a table. - The example program findchar.sd7 has been added. Findchar is an utility program to search for specific characters in files. - The new library iobuffer.s7i has been added. This library supports buffering of files. - The new library mixarith.s7i has been added. This library supports mixing of arithmethic operations between numeric types. - The file type fileInTar has been added to the library tar.s7i. This file type allows that a specific file from a tar archive can be opened. The functions open, getc, gets, eof, hasNext, length, seek, tell, and openFileInTar have been added to support the file type fileInTar. - The functions skipClassicComment and getSimpleStringLiteral have been added to the libraries scanfile.s7i and scanstri.s7i. - The makefile mk_emccl.mak has been added. This makefile supports compiling with the emcc C compiler from Emscripten under Linux. The support of Emscripten is experimental (see also src/read_me.txt). - The deprecated functions float2Bits and bits2Float have been removed from bin32.s7i and bin64.s7i. The functions bin32(), bin64() and float() can be used instead, to convert between float and bits in IEEE 754 representation. - In the programs chkbig.sd7, chkovf.sd7, chkset.sd7 and chkstr.sd7 large functions have been split into smaller functions. This avoids Stack errors with Emscripten. - Tests for allowed field names and CLOB fields have been added to chkdb.sd7. The functions create, testFieldNames and testClobField have been added to chkdb.sd7. - The primitive actions BIG_PARSE, BST_PARSE, FLT_PARSE and INT_PARSE have been renamed to BIG_PARSE1, BST_PARSE1, FLT_PARSE1 and INT_PARSE1 respectively. This actions parse the first argument instead of the third argument. The libraries bigint.s7i, bstring.s7i, float.s7i and integer.s7i have been improved to use the new actions.
2019-03-0322 Apr 2019 13:02 major feature: - The makefile mk_tcc_l.mak has been added. This makefile supports compiling with the tcc C compiler under Linux. - The makefile mk_tcc_w.mak has been added. This makefile is experimental and supports compiling with the tcc C compiler under Windows. - The example program brainf7.sd7 has been added. Brainf7 is a Brainfuck interpreter. - The example program hilbert.sd7 has been added. Hilbert displays a Hilbert curve. - The example program queen.sd7 has been added. Queen solves the n queen problem. - The example program spigotpi.sd7 has been added. Spigotpi writes digits of PI with a spigot algorithm. - The new library csv.s7i has been added. This library supports converting to and from comma-separated values (CSV). - Several improvements in the Seed7 compiler (s7c) have been done. - The functions skip() and copyFile() have been added to file.s7i. - The function makeParentDirs() has been added to osfiles.s7i. - In cli_cmds.s7i the function doMkdirCmd has been improved to call the new function makeParentDirs(). - In tar_cmds.s7i the functions tarXtract and tarCreate have been improved to avoid, that the whole file is read into a string. This avoids a MEMORY_ERROR, when the file does not fit into a string. - The function tarXtract has been improved to extract empty regular files and to create non-existing parent directories (with makeParentDirs()) - In gzip.s7i the functions openGzipFile(), close() and write() have been improved, to write the compressed data in blocks with a maximum size. This avoids a MEMORY_ERROR, when huge files are compressed. - In gzip.s7i the function openGunzipFile has been changed to have a file as parameter instead of a string. This way it is not necessary to read the whole compressed data into a string. - A variant of the function readGzipHeader has been added to gzip.s7i. - A variant of the function getAsciiz has been added to bytedata.s7i. - A variant of the function crc32 has been added to crc32.s7i.
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.