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
faa5a83
tbbuild: detect a compiler crash from the DEBUG CONSOLE, not the stat…
KubaO Sep 22, 2026
5b64cd4
check_examples: compile the documentation's twinBASIC code samples
KubaO Sep 22, 2026
00546eb
docs: mark the Core and VBA code samples that compile with check_build
KubaO Sep 22, 2026
b6bb8e0
WIP.ExamplesBuild: the Assert prefix finding is settled against the I…
KubaO Sep 22, 2026
269535c
docs: close the bold run in TestFixture's syntax line
KubaO Sep 22, 2026
40d0393
check_examples: group samples that form one program with projname
KubaO Sep 22, 2026
8cbf6a0
docs: qualify every Assert call with the package namespace, and check…
KubaO Sep 22, 2026
d9e7f7e
WIP: record projname, the cross-sample visibility it closes, and the …
KubaO Sep 22, 2026
f25c6d4
check_examples: add the class and method slots, and an inherits= base
KubaO Sep 22, 2026
9e2d80e
docs: complete the samples the stage set and templates can carry; 713…
KubaO Sep 22, 2026
791274a
check_examples: template inheritance, and split cef/webview2 so WebVi…
KubaO Sep 22, 2026
3329adf
docs: declare the locals the VBA-derived samples left implicit; 782 n…
KubaO Sep 22, 2026
7b4c170
check_examples: infer the Class row from WithEvents too; stage the pi…
KubaO Sep 22, 2026
6a9b2f1
check_examples: a hidden fence carries a page's own context, rendered…
KubaO Sep 22, 2026
31ea5cc
WIP: record the second pass, and correct the slot=class claim it got …
KubaO Sep 22, 2026
9d5a35c
check_examples: an access modifier is a declaration, not a statement;…
KubaO Sep 22, 2026
fe36540
WIP: split the engineering casebook into five topic siblings; 199 KB …
KubaO Sep 22, 2026
67435cf
WIP: move Wisdom's invocation notes out of global context into WIP.Wi…
KubaO Sep 22, 2026
b4ebc59
WIP.tbIDE: point the dangling AddIn link at the surface table that de…
KubaO Sep 22, 2026
e714879
deps: wasm-graphviz 1.22.0 -> 1.29.1; four of five committed diagrams…
KubaO Sep 22, 2026
66621a4
WIP: cut discovery narratives to rule plus evidence across the live f…
KubaO Sep 22, 2026
2c5071c
comments: Mermaid is no longer wired up; three comments still describ…
KubaO Sep 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
74 changes: 74 additions & 0 deletions BUGS-TO-REPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# twinBASIC bugs to report

A queue, not a record. Each entry is a **product** bug --- something twinBASIC itself does
wrong --- observed while working on this documentation. **Delete an entry once it has been
filed upstream**; nothing here is meant to accumulate, and an entry that stays after it is
filed turns this file into a second, worse issue tracker.

Documentation defects do not belong here. They are fixed in `docs/`, and the ones that are
not yet fixed are recorded in the relevant `WIP.*.md`.

What an entry owes a reader:

- the **build** it was seen on, because the answer changes between betas;
- a **minimal reproduction**, narrowed rather than pasted --- the thing that made it
reproduce is usually smaller and stranger than the code it was found in;
- what was tried that did **not** reproduce it, which is half of what makes a report
actionable;
- how it was **observed**, so somebody else can see the same thing.

---

## Compiler crashes on an `Interface` whose name and base are both angle-bracket placeholders

**Build:** BETA 983 (`twinBASIC_win32.dll+00141F7A`)
**Severity:** crash --- takes the compiler down, three restarts, then the IDE gives up.

This two-line file is the whole reproduction:

```
Interface <name> Extends <base-interface>
End Interface
```

The IDE's DEBUG CONSOLE reports `NATIVE EXCEPTION: ACCESS_VIOLATION {no-basic-code}` with
`>>> thread 0004: ParsingFileStart, <that file>`, then `restarting from MEMORY`, three
times over.

**Neither half reproduces it on its own**, which is what makes it worth reporting rather
than shrugging at:

| source | result |
|---|---|
| `Interface <name>` + `End Interface` | TB5182 Syntax error, no crash |
| `Interface IFoo Extends <base-interface>` + `End Interface` | TB5182 + TB5079 + TB5127, no crash |
| `Interface <name> Extends <base-interface>` + `End Interface` | **crash** |

So it takes a placeholder in *both* positions. The input is not real code --- it is a
syntax skeleton, the shape `docs/Reference/Attributes.md` uses to show where an attribute
goes --- but a parser meeting nonsense should diagnose it, and this one dereferences
something instead.

**Found by** pointing `scripts/check_examples.mjs` at the documentation's own code samples;
the skeleton is one of the 1,116 `tb` fences under `docs/`. A crash in a batch of samples
costs the whole batch its result, which is why that tool bisects on exit code 4.

---

## `--buildAndExit32` writes nothing, exits 0 on a project with errors, and hangs on a failing build

**Build:** BETA 983
**Severity:** makes the documented unattended-build switch unusable.

The IDE executable accepts `--buildAndExit32` and `--buildAndExit64`; `parseCommandLine()`
reads them, and Personal Edition is refused by name, so they are real. Measured three ways:

- **nothing is written to stdout or stderr, ever** --- no diagnostics, no summary;
- it **exits 0 on a project the IDE flags with errors**;
- when the build genuinely fails it **does not exit at all**, sitting on a *"Please wait…"*
dialog at 100% indefinitely.

Silent, falsely green, and hanging on the one case worth catching. This is why
`scripts/tbbuild.mjs` drives the IDE's WebView over CDP instead --- see
[WIP.Harness.md](WIP.Harness.md#compiling-a-twinbasic-project-without-the-ide-in-front-of-you), which
records the same measurements.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,10 @@ serve.bat # localhost:4000 with watch + live reload
check.bat # the gates that read the built site, ending in the accessibility scan
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)
```

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.
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` is the exception to both: it drives the twinBASIC IDE, so it is Windows-only and is deliberately outside every gate and outside CI.

Where to read more:

Expand Down
Loading
Loading