Path: csiph.com!xmission!news.snarked.org!border2.nntp.dca1.giganews.com!nntp.giganews.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: mertesthomas@gmail.com Newsgroups: comp.compilers Subject: Seed7 Release 2019-03-03 Date: Sun, 3 Mar 2019 10:59:32 -0800 (PST) Organization: Compilers Central Lines: 138 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <19-03-001@comp.compilers> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="94293"; mail-complaints-to="abuse@iecc.com" Keywords: available, OOP Posted-Date: 03 Mar 2019 18:27:54 EST X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:2167 Hello, I have released a new version of Seed7: seed7_05_20190303.tgz The download is here: https://sourceforge.net/projects/seed7/files In the Seed7 programming language new statements and operators can be declared easily. Types are first class objects and therefore templates/generics need no special syntax. Object orientation is used when it brings advantages and not in places when other solutions are more obvious. Seed7 is covered by the GPL (and LGPL for the Seed7 runtime library). Changelog: - 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: - In flt_act.s7i the function to process FLT_ISNAN has been improved to make sure, that the argument of the isnan() macro never contains preprocessor directives (e.g. #line directives). Some C compilers do not allow preprocessor directives in the argument list of a macro. Many thanks go to Alexander Vlasov for reporting this problem and for his help to find a solution. - In comp/str_act.s7i the function optimize_str_cat has been improved to assign the constant parts of strConcatN() outside of the actual expression. This might open possibilities to optimize the expression. - The function process_forward_declaration in the compiler (s7c) has been improved to avoid, that a prototype of a forward declared function, is written twice. - The function process_dynamic_param_implements has been improved to generate a switch-statement instead of an if-then-else chain. Additionally double entries are avoided now. - The function process_const_func_call has been improved to assign c_params.temp_assigns to c_expr.temp_assigns instead of c_expr.temp_decls. - The function processFuncValue has been improved to define the type and the function of the actual name parameter only once (with defineActualFuncParam()). A redefinition could happen when functions, that call functions with name parameters, are inlined. - The handling of the option -te (trace exceptions) has been improved. - The function process_const_func_declaration() has been improved to request, that for functions using the result mechanism the result is returned, when possible, as c_expr.expr_result. This way process_return_value() does not need to copy this string values. E.g. When the result of intStrToBuffer(), chrCLitToBuffer(), chrStrMacro(), strHeadSlice(), chrStrMacro() or strTailSlice() is used as the result value of a user defined function. - The function defineFunctype has been added and the function getAnyParamToTempAssigns has been improved to provide addresses of plain INTOBJECT, FLOATOBJECT, CHAROBJECT, STRIOBJECT and BSTRIOBJECT values. In this case the address is taken from a temporary variable. - In write_file_head() and init_type_constants() the creation of type constants has been improved. - 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. - The program ftp7.sd7 has been improved to support the commands !ls -l, !dir, !ls, !pwd, !mkdir and !rmdir. - The function noCtrlChars has been removed from db7.sd7 and sql7.sd7 and added to seed7_05.s7i. - The program chkchr.sd7 has been has been improved to check the functions literal() and c_literal(). - Tests for the function str(), when str() assigned to a variable and when str() is called via a function, have been added to chkint.sd7. - Tests for aString[.. pos], aString[pos ..], aString[pos1 .. pos2], aString[pos len length], when they are called via a function, have been added to chkstr.sd7. - The example program chkdb.sd7 has been improved to test decimal and numeric fields with negative values. - In x509cert.s7i the constant stdCertificate has been improved to have a new validity (until end of 2021). - The program chkccomp.c has been improved to determine, if preprocessor directives are allowed in the argument list of a macro invocation (DIRECTIVES_IN_MACRO_ARGUMENTS_OK). - In fil_rtl.c the functions filBigLng() and filLng() have been improved to determine the file length always with os_fseek and os_ftell. This guarantees that the correct length is returned, when data is written to a file and it has not been flushed. - The function ftelli64Ext() has been added to fil_win.c. This function is used when fseeki64() is available and ftelli64() is missing. Either fgetpos() or _telli64() is used to implement ftelli64Ext(). - Calls of logFunction have been added in ref_data.c and typ_data.c. - In sql_my.c the function sqlBindDuration() has been improved. - In sql_odbc.c the function getNumericAsCStri() has been added. - In sql_odbc.c the function getNumericFloat() has been improved to convert a SQL_NUMERIC_STRUCT to a double via the decimal representation. - In sql_post.c the functions getNumericAsCStri(), getNumericAsStri() and getNumericAsFloat have been improved. - The program chkccomp.c has been improved to define the macros 'os_isatty' and 'os_fileno', when the functions isatty() and fileno() are not available. - A definition of 'isatty' and 'fileno' has been added to os_decls.h. - The mechanism to check for stack overflow has been improved. By default the mechanism is deactivated. Regards, Thomas Mertes -- Seed7 Homepage: http://seed7.sourceforge.net Seed7 - The extensible programming language: User defined statements and operators, abstract data types, templates without special syntax, OO with interfaces and multiple dispatch, statically typed, interpreted or compiled, portable, runs under linux/unix/windows.