Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
8187a3b
docs, bugs: the census figure and the error-9 note re-measured on BET…
KubaO Oct 1, 2026
549ee9f
docs: Attributes.md's applicability notes and three tbIDE notes re-me…
KubaO Oct 1, 2026
756c396
docs, bugs: Forms-by-index crash still on BETA 995; it needs a variab…
KubaO Oct 1, 2026
26593a9
scripts: the lane runner shared; ide-test.bat runs IDE scenarios, Exp…
KubaO Oct 1, 2026
ccb4697
docs, bugs: >> is arithmetic since BETA 984; BUGS entries re-run on B…
KubaO Oct 1, 2026
e68a3d4
test: ide-test.bat's debugger lane; Debug.md's two defects hold on BE…
KubaO Oct 1, 2026
7ef60f3
test: ide-test.bat's packages lane; an imported package is still unti…
KubaO Oct 1, 2026
f6ac2a2
scripts, builder: check_cli's cases move to scripts/lib/cli-cases.mjs…
KubaO Oct 1, 2026
7d7e72c
lint: noUndeclaredVariables on, with axe and Paged declared only wher…
KubaO Oct 1, 2026
964f061
bugs: the command-line entries re-run on BETA 995, unchanged
KubaO Oct 1, 2026
01338f4
test: the export lane asserts ${SourcePath}'s deletion and the CLI's …
KubaO Oct 1, 2026
c619394
test: the packages lane asserts that one Apply keeps running the repl…
KubaO Oct 1, 2026
a490c28
bugs: FastCall and ThisCall delegates call as stdcall on win32
KubaO Oct 1, 2026
c5636ac
docs: ThisCall and FastCall, in API Declarations' Calling Conventions…
KubaO Oct 1, 2026
89aace2
bugs: an embedded package with no Packages folder puts 995's compiler…
KubaO Oct 1, 2026
e280b73
impexp: import adds the empty folders the IDE always writes, to the p…
KubaO Oct 1, 2026
6703b4a
test: an ide-test lane for Stop at a failed Assert; two editor BUGS e…
KubaO Oct 1, 2026
76a3058
test: the add-in lanes state BETA 995 as well; 995's hover on a state…
KubaO Oct 1, 2026
5076906
wip: the harness and add-in notes re-checked on BETA 995; export's fo…
KubaO Oct 1, 2026
81c99ea
docs: As New needs a no-argument constructor (TB5121); 984's FileCopy…
KubaO Oct 1, 2026
37d7318
bugs: As New refuses an all-Optional constructor; FileCopy of an open…
KubaO Oct 1, 2026
bf2ce14
docs: LLVM-compiled code ignores Debug.Assert and skips its condition…
KubaO Oct 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
312 changes: 209 additions & 103 deletions BUGS-TO-REPORT.md

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,10 @@ test.bat # the gates that test the toolchain itself
book.bat # renders the PDF book; run build.bat first
examples.bat # compiles the twinBASIC code samples in the pages (Windows + a twinBASIC install)
addin-test.bat # tests IDE add-ins by operating an IDE (Windows + a twinBASIC install)
ide-test.bat # tests the IDE itself by operating it (Windows + a twinBASIC install)
```

A clean `build.bat && check.bat` is the bar for "ready to commit"; add `test.bat` when the change touched anything outside `docs/`. Each wrapper names the gates it runs, in order, on [Tools and Scripts](https://docs.twinbasic.com/Documentation/Development/Tools). On Linux or macOS, run the `node` command inside each batch file directly --- they are thin wrappers. `examples.bat` and `addin-test.bat` are the exceptions to both: they drive the twinBASIC IDE, so they are Windows-only and deliberately outside every gate and outside CI.
A clean `build.bat && check.bat` is the bar for "ready to commit"; add `test.bat` when the change touched anything outside `docs/`. Each wrapper names the gates it runs, in order, on [Tools and Scripts](https://docs.twinbasic.com/Documentation/Development/Tools). On Linux or macOS, run the `node` command inside each batch file directly --- they are thin wrappers. `examples.bat`, `addin-test.bat` and `ide-test.bat` are the exceptions to both: they drive the twinBASIC IDE, so they are Windows-only and deliberately outside every gate and outside CI.

Where to read more:

Expand Down
25 changes: 14 additions & 11 deletions WIP.Harness.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,16 @@ compiler's `export` verb unpacks any of them without opening the IDE:
"$TB/bin/twinBASIC_win32.exe" export "<some>.twinproj" "C:\out\dir\" --overwrite
```

Against BETA 983 that yields **820 `.twin` files** --- 661 from the sixteen packages under
`packages/`, 159 from the thirty-two sample and template projects under `projects/` and
`addins/`. All of it is code the compiler accepts, which makes it the strongest available
evidence for anything the documentation asserts about legal syntax.
Against BETA 983 and 995 alike that yields **820 `.twin` files** --- 661 from the sixteen
packages under `packages/`, 159 from the thirty-two sample and template projects under
`projects/` (`addins/` holds no `.twinproj`). All of it is code the compiler accepts, which
makes it the strongest available evidence for anything the documentation asserts about legal
syntax.

Two operational notes, both learned the annoying way. **Use backslashes.** A folder named
with forward slashes fails with `output folder does not exist and could not be created`
whether it exists or not. This note used to say that the folder must already exist and that
only one level of it is created; measured against BETA 983, `export` given backslashes
creates every missing level, three deep in the test. Its project path must also be a full
whether it exists or not, creates nothing, and still exits 0. Given backslashes, `export`
creates every missing level, three deep in the test (BETA 983 and 995). Its project path must also be a full
one, because it is prefixed with `\\?\`. And **redirect stdin** when looping (`</dev/null`),
or the executable consumes the loop's input and the second iteration never runs.

Expand Down Expand Up @@ -85,7 +85,8 @@ node scripts/census_attributes.mjs --attr Hidden # one attribute
node scripts/census_attributes.mjs --attr Hidden --dump-sites sites.json
```

Against BETA 983: **661 files, 9,701 attribute sites, 55 distinct attributes**, and every
Against BETA 995: **661 files, 9,713 attribute sites, 55 distinct attributes** (BETA 983
gave 9,701 sites; 987 to 995 added a hidden VBA declare and a `[DispId]` on `QueryUnload`), and every
one of the 55 is already in `Attributes.md` --- the "used but undocumented" section comes
back empty. Sixteen documented attributes are used by no package, which is not a defect
but does mean the census offers no evidence for those `Applicable to:` lines and a probe
Expand Down Expand Up @@ -532,7 +533,7 @@ Four smaller things it knows, each of which cost a run:
comes straight after the `[BUILD] Executing` line, before the probe's first statement runs.
The probe's `Debug.Cls` erases it, the probe prints what comes before the call and stops
there, and `tbrun` used to exit 0 with that partial output (measured with and without
`Debug.Cls` on BETA 983). Since the tooling review's C25a, `tbrun` wraps the page's global
`Debug.Cls` on BETA 983 and 995: with it the probe prints exactly its lines, without it `tbrun` warns and the build log lines precede them, exit 0 either way). Since the tooling review's C25a, `tbrun` wraps the page's global
`clearDebugConsole()` before it presses Build, and keeps what each clear erases
(`keepClears` in `tb-ide-console.mjs`). A `BUILD_FAILED` line in that record after the last
`[BUILD] Executing` line exits 2, naming the line and printing the partial output. `main.js`
Expand Down Expand Up @@ -813,10 +814,12 @@ exactly what the lane puts there. The compiler loads the DLLs in
`%APPDATA%\twinBASIC\addins\<arch>` as well (P6), and the `APPDATA` each lane gives its
IDEs keeps the user's out ([The add-in test runner](#the-add-in-test-runner)).

**Measured, against BETA 983:**
**Measured, against BETA 983 (and 995 where stated):**

- **An IDE session writes nothing into its install.** A compile, a compiler crash and a
`tbrun` build-and-run each left all 233 files byte-identical, down to the mtimes. A
`tbrun` build-and-run each left all 233 files byte-identical, down to the mtimes; on
BETA 995 the install (235 files) was byte-identical after exports, a `tbbuild` and two
`tbrun` runs. A
compile also left the per-user `%APPDATA%\twinBASIC` unchanged; that folder holds the
user's downloaded packages and empty `addins`, `locale` and `themes` folders, and is
shared by every install. So a compile's whole footprint outside its temp folders is the
Expand Down
Loading
Loading