<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sciteco/src, branch v2.1.1</title>
<subtitle>Scintilla-based Text Editor and COrrector</subtitle>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/'/>
<entry>
<title>Win32: fixed Unicode commandlines with newer MinGW runtimes</title>
<updated>2024-11-10T20:16:52+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-11-10T20:16:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=605bd59516b0868cc73ed01f913eeb331033a84b'/>
<id>605bd59516b0868cc73ed01f913eeb331033a84b</id>
<content type='text'>
* should also fix Win32 nightly builds
* Even though we weren't using main's argv, but were using glib
  API for retrieving the command line in UTF-8, newer MinGW runtimes
  would fail when converting the Unicode command line into the system codepage
  would be lossy.
* Most people seem to compile in a "manifest" to work around this issue.
  But this requires newer Windows versions and using some Microsoft tool which isn't
  even in $PATH.
  Instead, we now link with -municode and define wmain() instead, even though we still
  ignore argv. wmain() proabably get's the command line in UTF-16 and we'd have to
  convert it anyway.
* See https://github.com/msys2/MINGW-packages/issues/22462
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* should also fix Win32 nightly builds
* Even though we weren't using main's argv, but were using glib
  API for retrieving the command line in UTF-8, newer MinGW runtimes
  would fail when converting the Unicode command line into the system codepage
  would be lossy.
* Most people seem to compile in a "manifest" to work around this issue.
  But this requires newer Windows versions and using some Microsoft tool which isn't
  even in $PATH.
  Instead, we now link with -municode and define wmain() instead, even though we still
  ignore argv. wmain() proabably get's the command line in UTF-16 and we'd have to
  convert it anyway.
* See https://github.com/msys2/MINGW-packages/issues/22462
</pre>
</div>
</content>
</entry>
<entry>
<title>if a macro ends without finding a goto label, always throw a 'Label "..." not found' error</title>
<updated>2024-11-07T19:13:50+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-11-07T19:13:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=b016f781647ce0aec03f98cb67d743983b5d6038'/>
<id>b016f781647ce0aec03f98cb67d743983b5d6038</id>
<content type='text'>
* This is important with gotos in loops as in &lt;@O/x/&gt; where, we would otherwise
  get a confusing "Unterminated loop" error.
* This in particular fixes the error thrown in grosciteco.tes when encountering
  a new unknown command.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* This is important with gotos in loops as in &lt;@O/x/&gt; where, we would otherwise
  get a confusing "Unterminated loop" error.
* This in particular fixes the error thrown in grosciteco.tes when encountering
  a new unknown command.
</pre>
</div>
</content>
</entry>
<entry>
<title>test suite: fixed failure detection in the commandline-editing test cases</title>
<updated>2024-11-06T21:02:27+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-11-06T21:02:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=6747f318f50760d7a3a773e894df3d3ed449e5d7'/>
<id>6747f318f50760d7a3a773e894df3d3ed449e5d7</id>
<content type='text'>
* The program exit code will usually not signal failures since they are caught earlier.
* Therefore, we always have to capture and check stderr.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* The program exit code will usually not signal failures since they are caught earlier.
* Therefore, we always have to capture and check stderr.
</pre>
</div>
</content>
</entry>
<entry>
<title>fixed the Q-Reg spec machine used for implementing S^EGq$ (match one of characters in Q-Register)</title>
<updated>2024-11-06T20:50:09+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-11-06T20:50:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=5f141848b88237959bd01603b427b792828d73ad'/>
<id>5f141848b88237959bd01603b427b792828d73ad</id>
<content type='text'>
* It was initialized only once, so it could inherit the wrong local Q-Register table.
  A test case has been added for this particular bug.
* Also, if starting from the profile (batch mode), the state machine could be initialized
  without undo, which then later cause problems on rubout in interactive mode.
  For instance, if S^EG[a] fails and you would repeatedly type `]`, the Q-Reg name could
  grow indefinitely. There were probably other issues as well.
  Even crashes should have been possible, although I couldn't reproduce them.
* Since the state machine is required only for the pattern to regexp translation
  and is performed anew for every character in interactive mode,
  we now create a fresh state machine for every call and don't attempt
  any undo.
  There might be more efficient ways, like reusing the string building's
  Q-Reg parser state machine.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* It was initialized only once, so it could inherit the wrong local Q-Register table.
  A test case has been added for this particular bug.
* Also, if starting from the profile (batch mode), the state machine could be initialized
  without undo, which then later cause problems on rubout in interactive mode.
  For instance, if S^EG[a] fails and you would repeatedly type `]`, the Q-Reg name could
  grow indefinitely. There were probably other issues as well.
  Even crashes should have been possible, although I couldn't reproduce them.
* Since the state machine is required only for the pattern to regexp translation
  and is performed anew for every character in interactive mode,
  we now create a fresh state machine for every call and don't attempt
  any undo.
  There might be more efficient ways, like reusing the string building's
  Q-Reg parser state machine.
</pre>
</div>
</content>
</entry>
<entry>
<title>fixed possible crashes during --fake-cmdline</title>
<updated>2024-11-06T19:33:48+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-11-06T19:33:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=9242405c8fc31b869fecfe096f29eb1a2ca75bda'/>
<id>9242405c8fc31b869fecfe096f29eb1a2ca75bda</id>
<content type='text'>
* A test case has been added, although it might have been accidental
  that on caused crashes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* A test case has been added, although it might have been accidental
  that on caused crashes.
</pre>
</div>
</content>
</entry>
<entry>
<title>fixup: fixed Windows builds</title>
<updated>2024-11-05T12:35:28+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-11-05T12:35:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=2406e37ebe06d564a81b7ead8a56ffd8716b3ad4'/>
<id>2406e37ebe06d564a81b7ead8a56ffd8716b3ad4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fully support relocatable binaries, improving AppImages</title>
<updated>2024-11-05T09:32:04+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-11-04T22:29:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=9cce7d263ea3f2984a619cdfcb54d264c6a4c51d'/>
<id>9cce7d263ea3f2984a619cdfcb54d264c6a4c51d</id>
<content type='text'>
* You can now specify `--with-scitecodatadir` as a relative path,
  that will be interpreted relative to the binary's location.
* Win32 binaries already were relocatable, but this was a Windows-specific
  hack. Win32 binaries are now built with `--with-scitecodatadir=.`
  since everything is in a single directory.
* Ubuntu packages are now also built `--with-scitecodatadir=../share/sciteco`.
  This is not crucial for ordinary installations, but is meant for AppImage creation.
* Since AppImages are now built from relocatable packages,
  we no longer need the unionfs-workaround from pkg2appimage.
  This should fix the strange root contents when autocompleting in
  AppImage builds.
* This might also fix the appimage.github.io CI issues.
  I assume that because I could reproduce the issue on FreeBSD's
  Linuxulator in dependence of pkg2appimage's "union"-setting.
  See https://github.com/AppImage/appimage.github.io/pull/3402
* Determining the binary location actually turned out be hard and
  very platform-dependant. There are now implementations for Windows
  (which could also read argv[0]), Linux and generic UNIX (which
  works on FreeBSD, but I am not sure about the others).
  I believe this could also be useful on Mac OS to create app bundles,
  but this needs to be tested - currently the Mac OS binaries are
  installed into fixed locations and don't use relocation.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* You can now specify `--with-scitecodatadir` as a relative path,
  that will be interpreted relative to the binary's location.
* Win32 binaries already were relocatable, but this was a Windows-specific
  hack. Win32 binaries are now built with `--with-scitecodatadir=.`
  since everything is in a single directory.
* Ubuntu packages are now also built `--with-scitecodatadir=../share/sciteco`.
  This is not crucial for ordinary installations, but is meant for AppImage creation.
* Since AppImages are now built from relocatable packages,
  we no longer need the unionfs-workaround from pkg2appimage.
  This should fix the strange root contents when autocompleting in
  AppImage builds.
* This might also fix the appimage.github.io CI issues.
  I assume that because I could reproduce the issue on FreeBSD's
  Linuxulator in dependence of pkg2appimage's "union"-setting.
  See https://github.com/AppImage/appimage.github.io/pull/3402
* Determining the binary location actually turned out be hard and
  very platform-dependant. There are now implementations for Windows
  (which could also read argv[0]), Linux and generic UNIX (which
  works on FreeBSD, but I am not sure about the others).
  I believe this could also be useful on Mac OS to create app bundles,
  but this needs to be tested - currently the Mac OS binaries are
  installed into fixed locations and don't use relocation.
</pre>
</div>
</content>
</entry>
<entry>
<title>fixed assertions in ^EGq search construct for Q-Registers with uninitialized string cells</title>
<updated>2024-11-03T19:36:36+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-11-03T13:43:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=4b05f261debf2320cd5b66df4a7becc36c4a8916'/>
<id>4b05f261debf2320cd5b66df4a7becc36c4a8916</id>
<content type='text'>
Found thanks to the "infinite monkey" test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Found thanks to the "infinite monkey" test.
</pre>
</div>
</content>
</entry>
<entry>
<title>Added "infinite monkey"-style test (refs #26)</title>
<updated>2024-11-03T19:36:36+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-11-03T13:15:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=18bb9c0cd8e8b8f74347eef1a5afabe6233159d7'/>
<id>18bb9c0cd8e8b8f74347eef1a5afabe6233159d7</id>
<content type='text'>
Supposing that any monkey hitting keys on a typewriter, serving as a hardcopy
SciTECO terminal, will sooner or later trigger bugs and crash the application,
the new monkey-test.apl script emulates such a monkey.
In fact it's a bit more elaborate as the generated macro follows the frequency
distribution extracted from the corpus of SciTECO macro files (via monkey-parse.apl).
This it is hoped, increases the chance to get into "interesting" parser states.

This also adds a new hidden --sandbox argument, but it works only on FreeBSD (via Capsicum)
so far. In sandbox mode, we cannot open any file or execute external commands.
It is made sure, that SciTECO cannot assert in sandbox mode for scripts that would
run without --sandbox, since assertions are the kind of things we would like to detect.
SciTECO must be sandboxed during "infinite monkey" tests, so it cannot accidentally
do any harm on the system running the tests.
All macros in sandbox mode must currently be passed via --eval.
Alternatively, we could add a test compilation unit and generate the test data
directly in memory via C code.

The new scripts are written in GNU APL 1.9 and will probably work only under FreeBSD.
These scripts are not meant to be run by everyone.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Supposing that any monkey hitting keys on a typewriter, serving as a hardcopy
SciTECO terminal, will sooner or later trigger bugs and crash the application,
the new monkey-test.apl script emulates such a monkey.
In fact it's a bit more elaborate as the generated macro follows the frequency
distribution extracted from the corpus of SciTECO macro files (via monkey-parse.apl).
This it is hoped, increases the chance to get into "interesting" parser states.

This also adds a new hidden --sandbox argument, but it works only on FreeBSD (via Capsicum)
so far. In sandbox mode, we cannot open any file or execute external commands.
It is made sure, that SciTECO cannot assert in sandbox mode for scripts that would
run without --sandbox, since assertions are the kind of things we would like to detect.
SciTECO must be sandboxed during "infinite monkey" tests, so it cannot accidentally
do any harm on the system running the tests.
All macros in sandbox mode must currently be passed via --eval.
Alternatively, we could add a test compilation unit and generate the test data
directly in memory via C code.

The new scripts are written in GNU APL 1.9 and will probably work only under FreeBSD.
These scripts are not meant to be run by everyone.
</pre>
</div>
</content>
</entry>
<entry>
<title>fixup: make sure the correct PCs, pointing directly at the command that failed, get assigned to error frames</title>
<updated>2024-10-30T11:27:39+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-10-30T11:27:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=be230b5ebccde8605557eb6f8233867cc0bb2e06'/>
<id>be230b5ebccde8605557eb6f8233867cc0bb2e06</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
