Seed7 - The extensible programming language 2017-01-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

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.