<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent posts to news</title><link>https://sourceforge.net/p/buraphakit/news/</link><description>Recent posts to news</description><atom:link href="https://sourceforge.net/p/buraphakit/news/feed.rss" rel="self"/><language>en</language><lastBuildDate>Tue, 31 Aug 2021 10:20:14 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/buraphakit/news/feed.rss" rel="self" type="application/rss+xml"/><item><title>ECMA-55 Minimal BASIC Version 2.40 Released</title><link>https://sourceforge.net/p/buraphakit/news/2021/08/ecma-55-minimal-basic-version-240-released/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="version-240-of-minimal-basic-compiler-released"&gt;Version 2.40 of Minimal BASIC Compiler Released&lt;/h1&gt;
&lt;p&gt;This release continues the effort to implement all of the ECMA-116 Full BASIC mathematical functions by adding DATE and TIME.  It also adds our first string functions, DATE$ and TIME$, also from ECMA-116 Full BASIC.  It also fixes the bug where PI and MAXNUM didn't work as functions in DATA statements when -X was specified.  AVX code generation was removed since it actually generated programs that were slower since this compiler has no vectorization logic. Finally, a new appendix has been added to the included book, and the generated PDF for the book is compressed and linearized, while still remaining PDF/A-1b.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;New Features:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add support for DATE and TIME numeric functions from ECMA-116 Full BASIC (available when extensions are enabled with -X).&lt;/li&gt;
&lt;li&gt;Add support for DATE$ and TIME$ string functions from ECMA-116 Full BASIC (available when extensions are enabled with -X).&lt;/li&gt;
&lt;li&gt;Add support for back-tick, backslash, and tilde (available when extensions are enabled with -X).  This feature enhancement was requested by Doug Kearns.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Bug Fixes:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix undefined bit-shift behavior in dtoa5_normal.c found by clang 12.0 undefined behavior sanitizer.&lt;/li&gt;
&lt;li&gt;Fix undefined bit-shift behavior in robert1.c found by clang 12.0 undefined behavior sanitizer.&lt;/li&gt;
&lt;li&gt;Fix bug where PI and MAXNUM didn't generate the appropriate numeric constant values in DATA statements when extensions are enabled with -X.&lt;/li&gt;
&lt;li&gt;Fix bug where '@' was permitted without extensions.  This bug was reported by Doug Kearns. &lt;/li&gt;
&lt;li&gt;Fixes for spelling errors in both the source code and the included Learn BASIC book, using a patch from Doug Kearns.&lt;/li&gt;
&lt;li&gt;Fixed error message when strange characters are encountered by the scanner.  This was prompted by a bug report from Doug Kearns who noted that the error message when he had a horizontal tab in his source code wrongly complained that lower-case letters were not allowed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Improvements to the software:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Simplify zonermore.c's genheaderline0 to avoid a cppcheck 3.4 warning.&lt;/li&gt;
&lt;li&gt;Add support for clang 12.X.&lt;/li&gt;
&lt;li&gt;Silence warnings which show up with newer tcc and clang.&lt;/li&gt;
&lt;li&gt;Enable control-flow protection for compilers that support it (gcc &amp;amp; clang).&lt;/li&gt;
&lt;li&gt;Enable static analyzer for gcc. (but see notes in README)&lt;/li&gt;
&lt;li&gt;Make scanner3 self-test logic simpler and more robust.&lt;/li&gt;
&lt;li&gt;Generate DATA statement assembly directly instead of using indirect macros.&lt;/li&gt;
&lt;li&gt;Move code generation for data from symbol_table module into codegen module where it should be.&lt;/li&gt;
&lt;li&gt;Add P417 test for PI and MAXNUM in DATA statements in extended mode.&lt;/li&gt;
&lt;li&gt;Update P388 test to include assignment test for MAXNUM.&lt;/li&gt;
&lt;li&gt;Update makefiles to build unit tests more efficiently using a single combined compile+link step instead of using two discrete compile and link steps.&lt;/li&gt;
&lt;li&gt;Improve makefiles to perform canrelease testing more simply and efficiently.&lt;/li&gt;
&lt;li&gt;Stop using gas macros in code generation, to ease debugging.&lt;/li&gt;
&lt;li&gt;Improve Makefile.runtests so it shows diff output when there are differences.&lt;/li&gt;
&lt;li&gt;Add P418 test for ECMA-116 TIME$ string function.&lt;/li&gt;
&lt;li&gt;Add P419 test for ECMA-116 DATE$ string function.&lt;/li&gt;
&lt;li&gt;Add P420 test for ECMA-116 TIME numeric function.&lt;/li&gt;
&lt;li&gt;Add P421 test for ECMA-116 DATE numeric function.&lt;/li&gt;
&lt;li&gt;Add BASICC.clang, BASICCS.clang, &amp;amp; BASICCW.clang which use llvm-mc and ld.lld instead of as and gold/ld.&lt;/li&gt;
&lt;li&gt;Add testing of wide (-w) mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Improvements to the documentation:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added new flowchart appendix with common flowchart shapes and how to implement them with ECMA-55 Minimal BASIC.&lt;/li&gt;
&lt;li&gt;Update book's references to specify page numbers for all off-page references.&lt;/li&gt;
&lt;li&gt;The included book is now compressed and linearized for better viewing over the web, smaller storage requirements, etc.  The PDF version is still PDF/A-1b, so it should display and print correctly and does not depend on having any particular fonts installed on your system.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Other Changes:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Removed pcc support, since pcc is once again unsupported and unmaintained.&lt;/li&gt;
&lt;li&gt;Removed AVX support, since simple scalar AVX didn't improve performance.    Until vectorization is implemented, AVX instructions provide no benefit yet add extra complexity and increase testing requirements.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gatewood Ham</dc:creator><pubDate>Tue, 31 Aug 2021 10:20:14 -0000</pubDate><guid>https://sourceforge.net82dde4c664ed2bd65c8d700ae15d411aaed77387</guid></item><item><title>ECMA-55 Minimal BASIC Version 2.31 Released</title><link>https://sourceforge.net/p/buraphakit/news/2021/02/ecma-55-minimal-basic-version-231-released/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="version-231-of-minimal-basic-compiler-released"&gt;Version 2.31 of Minimal BASIC compiler released&lt;/h1&gt;
&lt;p&gt;This release is composed of a few bug fixes, some build improvements, and an upgrade of the runtime mathematical function assembly code which is now based on SLEEF-3.5.1.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Bug Fixes:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix problems in parseinput found with cppcheck.&lt;/li&gt;
&lt;li&gt;Fix some memory leaks in symbol_table module self-tests.&lt;/li&gt;
&lt;li&gt;Change Makefile.clang so that if PIE=1 is selected, small code model is used, because after 4 major versions it appears clang will never fix their large  mode code generation to work reliably with PIE.&lt;/li&gt;
&lt;li&gt;Change clang compiler detection so it works even on Ubuntu 20.10 where they intentionally sabotage the usual --version identification string.&lt;/li&gt;
&lt;li&gt;Fix obviously incorrect comments in load_textdata.&lt;span&gt;[ch]&lt;/span&gt; files.&lt;/li&gt;
&lt;li&gt;Convert a few tabs that crept into the runtime assembly to spaces.&lt;/li&gt;
&lt;li&gt;Fix warning in robert1.c's realint().&lt;/li&gt;
&lt;li&gt;Fix warning in semantic_check.c's sc_nvar().&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;New Features:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add support to build system for llvm/clang 11.X versions.&lt;/li&gt;
&lt;li&gt;Make COMPILE_MODE=DEBUG enable bounds-checking for tcc.&lt;/li&gt;
&lt;li&gt;Make -V option to ecma55 show code model used for gcc and clang.&lt;/li&gt;
&lt;li&gt;Make -V option show glibc version (for glibc versions &amp;gt;= 2.3.2).&lt;/li&gt;
&lt;li&gt;Make -V option show Linux kernel version.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Improvements to the software:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improve discussion about unary minus problems in grammar.txt file.&lt;/li&gt;
&lt;li&gt;Add test of parseinput to canrelease builds.&lt;/li&gt;
&lt;li&gt;Change maximum possible subscript to 10000000 to allow larger arrays.&lt;/li&gt;
&lt;li&gt;Upgrade SINH/COSH/TANH/ASIN/ACOS/ATAN/ATAN2/POW/EXP/SIN/COS/TAN/LOG/LOG2/LOG10 run-time support with new versions from Naoki Shibata's SLEEF-3.5.1 upstream version.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Other Changes:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drop special-case Makefile.clang support for clang versions &amp;lt; 7.x.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gatewood Ham</dc:creator><pubDate>Wed, 24 Feb 2021 05:48:16 -0000</pubDate><guid>https://sourceforge.net8843882f1d4c16ef1cd6cb34beff70f3045c753e</guid></item><item><title>ECMA-55 Minimal BASIC Version 2.30 Released</title><link>https://sourceforge.net/p/buraphakit/news/2020/06/ecma-55-minimal-basic-version-230-released/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="version-230-of-minimalbasic-compiler-release"&gt;Version 2.30 of MinimalBASIC compiler release&lt;/h1&gt;
&lt;p&gt;This is another big release with many new features, including many more of the ECMA-116 Full BASIC mathematical functions, fixes for a couple of rare corner cases with the power operator, more accurate LOG2 and LOG10 runtime routines, and finally a switch from calling the kernel directly to properly using the vDSO for access to kernel time information.  To make reading the assembly easier, source lines from the input BASIC program are now inserted as comments in the assembly language output.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Bug Fixes:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Raise a specific 'NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER' exception for that case in POW instead of just raising the 'BAD POWER' exception.  Also correct some incorrect comments and dodgy re-use of a register in the binary_power macro.&lt;/li&gt;
&lt;li&gt;Stop chopping off built-in function names at 3 bytes internally.&lt;/li&gt;
&lt;li&gt;Fix two corner cases for ^ operator (power):&lt;br/&gt;
  -1^+INF now properly returns 1&lt;br/&gt;
  -1^-INF now properly returns 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;New features:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add support for ACOS(), ASIN(), COSH(), SINH(), TANH(), SEC(), CSC(), COT(), ROUND(), TRUNCATE() and ANGLE() functions from ECMA-116 Full BASIC (available when extensions are enabled with -X).&lt;/li&gt;
&lt;li&gt;Include BASIC source lines in the assembly code as comments.  Each comment line of BASIC source is inserted just before the corresponding assembly code implementing that line.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Improvements to the software:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Update hint in Makefile.runtests for removing stale NBS_runtests.? directory to include the required DIRNO=? setting.&lt;/li&gt;
&lt;li&gt;Added many more tests for corner cases of ^ operator (power).&lt;/li&gt;
&lt;li&gt;Use SLEEF-3.4.1 LOG10() implementation instead of LOG(x)*(1/LOG(10)).&lt;/li&gt;
&lt;li&gt;Use SLEEF-3.4.1 LOG2() implementation instead of LOG(x)*(1/LOG(2)).&lt;/li&gt;
&lt;li&gt;Properly use vDSO to access time using clock_gettime() for RANDOMIZE instead of making direct kernel calls to gettimeofday().&lt;/li&gt;
&lt;li&gt;Source lines are stored in the AST used internally by the compiler, making them available to all parts of the compiler which run after the parser.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Improvements to the documentation:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Update book's BASIC Numeric Functions appendix to include brief descriptions of the ACOS(), ASIN(), COSH(), SINH(), TANH(), SEC(), CSC(), COT(), ROUND(),&lt;br/&gt;
  TRUNCATE(), and ANGLE() functions.&lt;/li&gt;
&lt;li&gt;Updated ecma55 man page to note existence of the ACOS(), ASIN(), COSH(), SINH(), TANH(), SEC(), CSC(), COT(), ROUND(), TRUNCATE() and ANGLE() functions.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gatewood Ham</dc:creator><pubDate>Fri, 12 Jun 2020 08:39:00 -0000</pubDate><guid>https://sourceforge.netb2c38c4faff7322f207e016497f39bb6f2f6d2f1</guid></item><item><title>ECMA-55 Minimal BASIC compiler version 2.29 released</title><link>https://sourceforge.net/p/buraphakit/news/2020/05/ecma-55-minimal-basic-compiler-version-229-released/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="ecma-55-minimal-basic-compiler-version-229-released"&gt;ECMA-55 Minimal BASIC compiler version 2.29 released&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Version 2.29 of MinimalBASIC compiler release&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is a big release with major bugfixes and many new features.  Even if you don't use the new features, you'll get to enjoy the improvements in accuracy.  This is especially true for people who use the '-s' option (32 bit math).  If you are actually reading the assembly code, there are more comments and a little bit less indirection.  And last, but certainly not least, the included book continues to improve, and its appendix does document all the newly added math functions.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Bug fixes:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix DAG deletion to properly handle n-ary DAGs.&lt;/li&gt;
&lt;li&gt;Fix very hard to hit bug that occurred if you used some built-in math functions but never printed a floating-point value.  This caused the code emitter to omit required support for printing floating-point values which was necessary for error messages.&lt;/li&gt;
&lt;li&gt;Fixes for rare bug in self-test system for HAM test suite when testing floats in extended mode.&lt;/li&gt;
&lt;li&gt;Fix clearing symbol table to clear static tables.  Before this fix it was freeing dynamic information, but it did not reset the static table values.&lt;/li&gt;
&lt;li&gt;Fix bug in semantic_checks module where accessing numeric variables without any PRINT statements failed to include the required printing support for error messages that could occur.&lt;/li&gt;
&lt;li&gt;Fix some exception generation problems with +/-INFINITY constant literal values.&lt;/li&gt;
&lt;li&gt;Implemented underflow exception reporting for EXP function.  This is arguably a new feature since it never worked before, but it is one of the recommended features for ANSI accodring to the NBS test suite.  Since the X64 instruction set doesn't support reliable floating point underflow detection, and SLEEF's exp implementation doesn't report underflow either, this was especially tricky to implement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;New features:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add support for CEIL(), PI, DEG(), RAD(), MIN(), MAX(), IP(), FP(), LOG2(), LOG10(), and MAXNUM functions from ECMA-116 Full BASIC (available when extensions are enabled with -X).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Improvements to the software:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Upgrade SIN/COS/TAN/ATAN/POW/EXP/POW run-time support with new versions from Naoki Shibata's SLEEF-3.4.1 upstream version.&lt;/li&gt;
&lt;li&gt;Add/Improve comments for most of the hand-written assembly code.&lt;/li&gt;
&lt;li&gt;Add support to build system for llvm/clang 10.X versions.&lt;/li&gt;
&lt;li&gt;Add support for built-in functions with two parameters.&lt;/li&gt;
&lt;li&gt;Use DAG representation for all programs so only one copy of each jump target exists.  This simplifies renumbering and reduces memory usage.  The conversion from tree to DAG is done in a separate pass after the parse and jump target verification.&lt;/li&gt;
&lt;li&gt;Updated self-tests to support COMPILE_MODE=DEBUG3 (MJOLNIR heap debugger).&lt;/li&gt;
&lt;li&gt;Update MJOLNIR leak display to actually hexdump every single leaked byte.  I hope you never need it, but when all else fails and it's time to break out the &lt;em&gt;BIG&lt;/em&gt; hammer, at least it will be ready.  This is how I finally figured out why the DAG was leaking after two days of seeing valgrind whine mysteriously.  Valgrind was correct about the leak, but it wouldn't really show me what was leaking.&lt;/li&gt;
&lt;li&gt;Add support to build system for running semantic_checks module self-test.&lt;/li&gt;
&lt;li&gt;Add self-test for semantic_checks module.&lt;/li&gt;
&lt;li&gt;Improve handling of +/-INFINITY constant literal values.&lt;/li&gt;
&lt;li&gt;Delay conversions of constant literal values until assembly generation, yielding more accurate code regeneration with -P/-R.&lt;/li&gt;
&lt;li&gt;Rewrite log_macro assembly macro to avoid requiring a second xmm register.&lt;/li&gt;
&lt;li&gt;Refactor giant routine get_next_token() in scanner3, yielding a process_letters() function which has been updated to use a more idiomatic C language style which is easier to read and modify.&lt;/li&gt;
&lt;li&gt;Make -l and -L options output all licenses used.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Improvements to the documentation:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Update book's BASIC Numeric Functions appendix to include brief description of the CEIL(), PI, DEG(), RAD(), MIN(), MAX(), IP(), FP(), LOG2(), LOG10(), and MAXNUM functions.&lt;/li&gt;
&lt;li&gt;Updated ecma55 man page to note existence of CEIL(), PI, DEG(), RAD(), MIN(), MAX(), IP(), FP(), LOG2(), LOG10(), and MAXNUM functions.&lt;/li&gt;
&lt;li&gt;Fix some incorrect comments in dumpregs.s file.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gatewood Ham</dc:creator><pubDate>Fri, 15 May 2020 10:33:41 -0000</pubDate><guid>https://sourceforge.netc9eaf789f6e3e29abeedc467e99bfdfd004b300b</guid></item><item><title>ECMA-55 Minimal BASIC compiler version 2.28.1 released</title><link>https://sourceforge.net/p/buraphakit/news/2020/04/ecma-55-minimal-basic-compiler-version-2281-released/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="ecma-55-minimal-basic-compiler-version-2281-released"&gt;ECMA-55 Minimal BASIC compiler version 2.28.1 released&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Version 2.28.1 of MinimalBASIC compiler release&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Bug fix:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Move pos variable outside of __GLIBC__ ifdef like it should be, and add&lt;br/&gt;
  comment.  This fixes building with musl.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Version 2.28 of MinimalBASIC compiler release&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Bug Fixes:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed many typographical errors in NBS tests 12, 39, 43, 115, and 128 which&lt;br/&gt;
  were reported by Jorge Giner Cordero (author of bas55 interpreter).&lt;/li&gt;
&lt;li&gt;Fixed some outright wrong comments for FATAL and ICE functions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Improvements to the software:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use strdup() when it makes sense to simplify code.&lt;/li&gt;
&lt;li&gt;Updated expected output for updated NBS tests.&lt;/li&gt;
&lt;li&gt;Add CSCLASSICS/FIBOR.BAS, a small program with a recursive implementation&lt;br/&gt;
  of Fibonacci sequence generator.&lt;/li&gt;
&lt;li&gt;Replace opaque FSM-based scanner with a switch-based canner that, while&lt;br/&gt;
  perhaps not quite as fast, is easer to understand, update, and extend.&lt;br/&gt;
  This resulted in many changes to error output, so if you were grepping&lt;br/&gt;
  for that, you'll need to update your scripts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Improvements to the documentation:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Update book's bas55 appendix for new bas55 1.18 version.&lt;/li&gt;
&lt;li&gt;Improve book's ecma55 appendix installation instructions.&lt;/li&gt;
&lt;li&gt;Expand book with a new example showing the three common ways of reading lists&lt;br/&gt;
  of data from DATA statements.&lt;/li&gt;
&lt;li&gt;Expand book with a detailed explanation of the bubble sort BASIC program.&lt;/li&gt;
&lt;li&gt;Improve book's discussion of OPTION BASE 0.&lt;/li&gt;
&lt;li&gt;Expand book's coverage of multi-way branching by adding a dedicated&lt;br/&gt;
  chapter, and as a side effect simplify the chapter on multicolumn output.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gatewood Ham</dc:creator><pubDate>Fri, 17 Apr 2020 08:56:20 -0000</pubDate><guid>https://sourceforge.netd691ea01b4677a8d5619ba079ed17e033c78b2c7</guid></item><item><title>ECMA-55 Minimal BASIC compiler version 2.27 released</title><link>https://sourceforge.net/p/buraphakit/news/2020/03/ecma-55-minimal-basic-compiler-version-227-released/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="ecma-55-minimal-basic-compiler-version-227-released"&gt;ECMA-55 Minimal BASIC compiler version 2.27 released&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Bug Fixes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix DAG folding so it works for floats too, not just doubles.  For the end user, this means that using ecma55 with the options -s -X -O3 all active simultaneously now finally works correctly.&lt;/li&gt;
&lt;li&gt;Fix some corner cases for non-default INPUT_WIDTH compile-time constant values.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Improvements:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Replaced buggy run_tests NBS test harness with an all-new test harness written using GNU make.&lt;/li&gt;
&lt;li&gt;Replaced buggy run_tests2 and run_tests3 HAM test harness with an all-new test harness written using GNU make.&lt;/li&gt;
&lt;li&gt;Stop allocating large arrays on the stack, and allocate them with malloc() as it should be instead.&lt;/li&gt;
&lt;li&gt;Stop using static buffers for g_fmt() conversions.&lt;/li&gt;
&lt;li&gt;Stop using duplicate field names in different structures in the symbol table.&lt;/li&gt;
&lt;li&gt;Add tests for add_data_literal() to symbol table self-test code.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gatewood Ham</dc:creator><pubDate>Sat, 07 Mar 2020 10:38:06 -0000</pubDate><guid>https://sourceforge.netf1416e8ef47bc7fa3fc15efa9a5d64cc6fe70505</guid></item><item><title>Version 2.25 of MinimalBASIC released</title><link>https://sourceforge.net/p/buraphakit/news/2018/01/version-225-of-minimalbasic-released/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="version-225-of-minimalbasic-compiler-release"&gt;Version 2.25 of MinimalBASIC compiler release&lt;/h1&gt;
&lt;p&gt;Bug Fixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix a bug in the "Subroutine Example Flowchart (2 of 2)" in the tutorial book.&lt;/li&gt;
&lt;li&gt;Fix bug in ast module self-test where LEN() was treated like PRINT.&lt;/li&gt;
&lt;li&gt;Fix bug in scanner2 module self-test where LEN() was tested without -X option being specified.&lt;/li&gt;
&lt;li&gt;Fix rounding of array subscript expression values.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Only emit len_macro in generated assembly when it is needed.&lt;/li&gt;
&lt;li&gt;Only call gettimeofday syscall for RND if RANDOMIZE is used, since it is not needed to generate a repeatable sequence for the case when RND is used without RANDOMIZE.&lt;/li&gt;
&lt;li&gt;Use smarter assembly sequences for clearning/initializing buffers.&lt;/li&gt;
&lt;li&gt;Use smarter FOR .. NEXT loop code generation that does one branch per iteration instead of two.&lt;/li&gt;
&lt;li&gt;Enable stack protector when building the compiler with pcc.&lt;/li&gt;
&lt;li&gt;Use proper TeX double quotes in the tutorial book.&lt;/li&gt;
&lt;li&gt;Add a new section in arrays chapter of book that explains non-integral subscripts and why you do not really want to use them with examples.&lt;/li&gt;
&lt;li&gt;Generalize sequential search flowchart in the tutorial book to work for N elements.&lt;/li&gt;
&lt;li&gt;Clarify preface of book to specify only an AMD64 &lt;em&gt;compatible&lt;/em&gt; CPU is needed.  Originally, if the text was interpreted literally, it mandated an actual AMD brand CPU.&lt;/li&gt;
&lt;li&gt;Improve loop chapter in the book by adding a summary detailing the critical ideas about loops from the chapter.&lt;/li&gt;
&lt;li&gt;Improve array chapter in the book by rewriting several parts, and being more pedantic in explanations about OPTION BASE and DIM.  Add a new example program that shows issues when using floating point values for subscripts and loop increments.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This release has been successfully tested with the official tcc-0.9.27 compiler release.&lt;/li&gt;
&lt;li&gt;This release has been successfully tested with the official LLVM/Clang 5.0.1 compiler release.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gatewood Ham</dc:creator><pubDate>Fri, 05 Jan 2018 12:51:23 -0000</pubDate><guid>https://sourceforge.net22de74f22e24a37c57ab126a18075020d374abe8</guid></item><item><title>Version 2.24 of MinimalBASIC released</title><link>https://sourceforge.net/p/buraphakit/news/2017/11/version-224-of-minimalbasic-released/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="version-224-of-minimalbasic-compiler-released"&gt;Version 2.24 of MinimalBASIC compiler released&lt;/h1&gt;
&lt;p&gt;Improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add new chapter about singly linked lists to included tutorial book.&lt;/li&gt;
&lt;li&gt;Rewrite BASICC, BASICCS, and BASICCW man pages so that they are easier to understand.&lt;/li&gt;
&lt;li&gt;Use a more portable style of roff in the manual pages.  They have been tested and work fine with mandoc in addition to the groff for which they were originally written.&lt;/li&gt;
&lt;li&gt;Use mmap() for reading BASIC source file.&lt;/li&gt;
&lt;li&gt;Improve self-tests for parser2, ast, dag, asmgen, scanner2, and symbol_table modules.&lt;/li&gt;
&lt;li&gt;Add standard LEN() function for string length (available with -X option).&lt;/li&gt;
&lt;li&gt;Add test P374 to test LEN().&lt;/li&gt;
&lt;li&gt;Make clean targets of Makefile.* remove core files.&lt;/li&gt;
&lt;li&gt;Stop using pinsrd/pextrd for moving data between low 32 bits of fp registers and 32 bit gp registers and just used movd in assembly code.&lt;/li&gt;
&lt;li&gt;String comparison is extended to support { '&amp;lt;', '&amp;lt;=', '&amp;gt;', '&amp;gt;=' } (available with -X option).&lt;/li&gt;
&lt;li&gt;Improve test harness.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bug Fixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix compliation of scanner2 module with DEEP_DEBUG.&lt;/li&gt;
&lt;li&gt;Fix parser2 module to show grammar expansions for PRINT argument lists when using verbose mode.&lt;/li&gt;
&lt;li&gt;Remove references to .opt files from BASICC, BASICCS, and BASICCW manual pages.  The external peephole optimizer was removed in version 2.18, but the man pages were never updated to reflect that change.&lt;/li&gt;
&lt;li&gt;Fix bug in run_tests2 where ECMA55FLAGS were lost for X tests.&lt;/li&gt;
&lt;li&gt;Fix typo in NBS test P206.&lt;/li&gt;
&lt;li&gt;Fix expected output for test P205 (it runs with -X now).&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gatewood Ham</dc:creator><pubDate>Sun, 19 Nov 2017 15:37:39 -0000</pubDate><guid>https://sourceforge.net419d23ec999dc3adbe1a6d0851e3d27df42d0c1a</guid></item><item><title>Binary Action Pack 2.23 Released!</title><link>https://sourceforge.net/p/buraphakit/news/2017/10/binary-action-pack-223-released/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The Binary Action Pack (BAP) with a statically linked version of the compiler has been created and added to the download area.  This is for people who want to use the compiler for their ECMA-55 Minimal BASIC programs, but who do not want to build it from source.  It is only for post 4.0 Linux on AMD64/INTEL64 systems.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gatewood Ham</dc:creator><pubDate>Mon, 30 Oct 2017 06:31:55 -0000</pubDate><guid>https://sourceforge.netabd75d46a5929bfda4d66693faaafc1a02481a2f</guid></item><item><title>Version 2.23 of MinimalBASIC compiler released</title><link>https://sourceforge.net/p/buraphakit/news/2017/10/version-223-of-minimalbasic-compiler-released/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="version-223-of-minimalbasic-compiler-released"&gt;Version 2.23 of MinimalBASIC compiler released&lt;/h1&gt;
&lt;p&gt;Improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add self-test code to asmgen module.&lt;/li&gt;
&lt;li&gt;Use a more straight-forward implementation of unary minus.&lt;/li&gt;
&lt;li&gt;Prevent warnings on switch statement intional fall through cases when using gcc version 7 and newer.&lt;/li&gt;
&lt;li&gt;Align floating point literal constants on 8 byte boundaries.&lt;/li&gt;
&lt;li&gt;Use '_' instead of '-' for unary minus in debug output to distinguish it from binary minus.&lt;/li&gt;
&lt;li&gt;Only call fold_numeric_expression() in emit_numeric_expression() for trees; DAGs do their own folding.&lt;/li&gt;
&lt;li&gt;Make dag_binop() smarter about retuster usage for commutative operators.&lt;/li&gt;
&lt;li&gt;Improve the way text assembly files are included in the compiler.&lt;/li&gt;
&lt;li&gt;Refactor some large functions into pieces to simplify the code.&lt;/li&gt;
&lt;li&gt;Rearchitect the text assembly language routine access to allow a single load of an array indices instead of loading address for each routine one at a time.  It adds support for lookups of address in the program for PIE programs in addition to the existing support for traditional executables.&lt;/li&gt;
&lt;li&gt;Small improvements to generated assembly to use 32 xor and mov when possible.&lt;/li&gt;
&lt;li&gt;The Makefile.* files have been improved and they run more self-tests.&lt;/li&gt;
&lt;li&gt;The -V output to ecma55 now indicates if the stack protector and/or address sanitizers were used when ecma55 was built.&lt;/li&gt;
&lt;li&gt;Fix many, many typographical errors in comments.&lt;/li&gt;
&lt;li&gt;Add test P373 to test INT() more thoroughly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bug Fixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix bug in ON..GOTO error handling that manifested after unary minus code was replaced.&lt;/li&gt;
&lt;li&gt;Change .type statements to use @object instead of %object.&lt;/li&gt;
&lt;li&gt;Fix g_integer() function so it sets the type to R_REAL after converting the literal values.&lt;/li&gt;
&lt;li&gt;Fix typo in '-h' output text.&lt;/li&gt;
&lt;li&gt;Fix unsigned integer wraparound bug in dump_floatregs() used by raw_registers module self-test.&lt;/li&gt;
&lt;li&gt;Rewrote INT() assembly language implementation so that it handles numbers with magnitude outside the range of 64 signed integers instead of throwing an exception.  In addition, the new implementation now uses ROUNDSD when it is available (SSE4.1).&lt;/li&gt;
&lt;li&gt;Updated tests P330 and P345 expected output to match improved behavior of INT().&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Warning:&lt;/p&gt;
&lt;p&gt;Linux kernel versions 4.12.3 through 4.12.8 and version 4.11.12 are known to break the gcc and clang address sanitizers.  Kernel 4.12.9 is OK.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gatewood Ham</dc:creator><pubDate>Wed, 25 Oct 2017 04:29:40 -0000</pubDate><guid>https://sourceforge.nete1b6e754290d176b9a9d5bc33fda9a0a0c31f158</guid></item></channel></rss>