Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

SIMPL 1.1: step by step, line by line

A topic by Simpl_pseudocode created 6 days ago Views: 355 Replies: 3
Viewing posts 1 to 3
(1 edit) (+1)


SIMPL 1.1 is out! It's the first big update since launch, and it's about two things: seeing what your program does while it runs, and getting help while you write it. Programs written for SIMPL 1.0 run unchanged.

https://simpl-pseudocode.itch.io/simpl

What's new

Trace tables, filled in for you

Tick View > Trace Table and a new Trace tab fills in your program's trace table while it runs, just like the ones you draw by hand in a dry run: one column per variable, OUTPUT last, a new row at each round of a loop. Hover over a row to see which lines wrote it, double-click a cell to jump to its line, and export the table to a spreadsheet, a CSV file or a printed page next to the program. It's made for short programs, like the exercises of the manual.

Debugger: Step Over, Step Into, Step Out

Step (F10) now steps over routine calls, Step Into (F11) follows a call inside, and Step Out (Shift+F11) comes back to the caller. At every pause, the variables that just changed are highlighted, locals and globals are shown apart, and you can click any call in the Call Stack to look at its own variables. Recursion has never been easier to follow.

Mistakes caught as you type

A second after you stop typing, SIMPL underlines the first syntax error in red and tells you what's wrong, often with a "did you mean...?" for a misspelt keyword or name. Keywords are written in capitals and <- becomes ← as you type, closing words like ENDIF line up with their block by themselves, and the block the cursor is in is shaded and named above the editor. Every one of these can be turned off in the new Options menu, to practise as in the exam.

From an error to its explanation

Error messages are clearer and all have the same short shape: what went wrong, where, the line quoted with ^^^ under the words in question, and a hint. At the end of each one, More › opens the User Manual at the explanation of that kind of error.

A better User Manual

The manual now has a window of its own that you can keep on top of the editor. All 205 exercises were reviewed (96 rewritten or replaced, with their solutions), the Bigger picture sections were rewritten, and the appendix for Cambridge students follows the 2027-2029 syllabus.

Tetromino Tumble, remade

The sample game has a brand-new look. If you're upgrading from 1.0, see below how to get it.

And also

File > Open Recent and Save As, Go to Line, Toggle Line Comment, a right-click menu in the editor, reorganized menus, more checks in Cambridge Strict Mode, colors reviewed for legibility, and a long list of fixes. Everything is in the full list at the end of this post.

Upgrading from 1.0

  1. Download SIMPL 1.1 and put the new simpl.exe (Windows) or simpl.appimage (Linux) in the same folder as the old one, replacing it. Your settings, programs and libraries live next to it, and they are kept.
  2. To get the new Tetromino Tumble: SIMPL never overwrites a file that is already in your programs folder, because it might be one you changed. So rename the old one first, for example programs/tetromino_tumble.simpl to tetromino_tumble_1.0.simpl, then start SIMPL 1.1: it copies the new tetromino_tumble.simpl into the folder at startup. Your renamed copy stays as it was.

If you put SIMPL 1.1 in a new, empty folder instead, it starts with fresh copies of everything, Tetromino Tumble included: just copy your own programs over from the old programs folder.

Thanks for using SIMPL! If you find a bug or have an idea for the next version, leave a comment below.

Full list of changes

Writing code

  • Syntax check as you type. About a second after you stop typing, the first syntax error is underlined in red, its line number turns red, and the status bar says Syntax error, line N: hover for the message, click to go to the line. What you are still writing is not reported yet. Turn it off in Options > Check Syntax While Typing (to practise as in the exam).
  • "Did you mean...?" A misspelt keyword (OUTPT X, ENDIFF) or a name close to an existing one gets a suggestion: did you mean OUTPUT?, Did you mean Total?
  • Keywords in capitals and ← as you type. if becomes IF and <- becomes ← as soon as the word is finished, never inside strings or comments. Options > Uppercase Keywords and ← While Typing turns it off.
  • Closing words line up by themselves. ENDIF, NEXT, ELSE, UNTIL... move back to the indentation of their block as soon as you type them.
  • The block you are in. The lines of the block around the cursor are shaded, and the title above the editor lists the blocks you are inside (average.simpl › FOR I (line 4) › IF Mark >= 50 (line 6)). Options > Show Current Block turns it off.
  • Format Code (Ctrl+Shift+F) now also writes keywords in capitals and ←, and puts one statement per line.
  • Toggle Line Comment (Ctrl+/) comments or uncomments the selected lines; Go to Line (Ctrl+G) jumps to a line by its number.
  • Right-click menu in the editor, the console and the search boxes: Undo, Redo, Cut, Copy, Paste, Select All.
  • Typing. Quotes are paired only in code (not in comments, strings or words like Newton's); Enter at the start or in the middle of a line no longer leaves stray spaces.
  • Breakpoints follow their lines when you add or remove lines above them, and go away with a deleted line.

Running and debugging

  • Step Over, Step Into, Step Out. Step (F10) is now Step Over: a routine call runs in one go. Step Into (F11) goes inside the routine; Step Out (Shift+F11) finishes it and pauses back where it was called. F5 means Continue while paused.
  • What changed is highlighted. At each pause, the variables whose value changed are highlighted in the Variables panel, and the status bar lists them.
  • Local and global variables apart. Paused inside a PROCEDURE or FUNCTION, the Variables panel shows Local and Global groups; a global hidden by a local of the same name is greyed out.
  • Every call can be inspected. The Call Stack lists every call in progress with the line it is waiting at; click one to see its variables and its line. The tab's title counts the calls.
  • Clearer cues. An arrow ▶ marks the line about to run; the line number under the mouse shows where a click sets a breakpoint (also F9 on the cursor's line, and Run > Remove All Breakpoints).
  • Stop has a key of its own: Shift+F5.
  • The editor is read-only while a program runs (you can still select, copy and set breakpoints), so what you see is always what is running.
  • The debugger no longer stops inside IMPORTed libraries: their routines run in one go.

Trace Table (new)

  • View > Trace Table adds a Trace tab that fills in the program's trace table while it runs, like the ones drawn by hand in a dry run: one column per variable (and per array element or field that gets a value), OUTPUT last, a new row at each round of a loop.
  • Hover over a row to see which lines wrote it; double-click a cell to go to its line; while stepping, the row being written is highlighted.
  • Right-click a heading to hide, show or move columns. Export copies the table (it pastes as a table into a spreadsheet), saves it as CSV, or prints it with the program.
  • It suits short programs, such as the manual's exercises: a program runs more slowly while the table records. It records up to 1,000 rows and 60 columns; programs with graphics (CANVAS) and IMPORTed libraries are not traced. A short window explains this the first time.

Error messages

  • Clearer reports. The heading says what kind of error and where (Runtime error on line 7: the program stopped); the line is quoted with ^^^ under the words in question; the hint is set apart. Every report has the same short shape, in the IDE and from a terminal.
  • From the error to its explanation. More › at the end of each report opens the User Manual at that kind of error. Appendix C now explains each of the 13 kinds of error.
  • Names as you wrote them. Messages say Cannot assign to Age, not AGE.
  • An unterminated string is reported at its opening quote, not at the end of the program.

Cambridge Strict Mode

  • Now also reports several statements on one line, & used with a value that isn't text ("Age: " & 13), and SELF inside a class.
  • The menu entry is now Options > Cambridge Strict Mode.

Files, menus and toolbar

  • File > Open Recent lists the last ten programs; File > Save As (Ctrl+Shift+S) saves under another name.
  • File > Open clears the console and the variables, as File > New does.
  • Menus reorganized, as in VS Code: commands in the menu of what they act on, settings together in a new Options menu; Trace Table is in View; Edit has Cut, Copy, Paste and Find.
  • One name per command: the toolbar uses the menus' names (Run, Stop, Step Over...). Clear Variables is in the Run menu, Find in the Edit menu (Ctrl+F).
  • Find bar more compact, always at the left of its panel.
  • New keys: Shift+F5 Stop, F9 breakpoint, F11 / Shift+F11 Step Into / Out, Ctrl+Shift+S Save As, Ctrl+G Go to Line, Ctrl+/ comment, Ctrl+Q Exit, Ctrl+Shift+Z Redo. Help > Keyboard Shortcuts lists them all.

User Manual

  • A window of its own: it can go behind the IDE, be minimized, or stay on top (Keep on Top); F1 brings it back where you left it. In a narrow window, the contents become a drawer.
  • Title page entry at the top of the contents, to get back to the beginning.
  • Tables in the text's font, fitted to the page; the manual opens faster.
  • Content. The bigger picture sections rewritten (other languages, history, the real world); all 205 exercises reviewed, 96 rewritten or replaced, with their solutions; new A SIMPL extra boxes; Appendix H, for Cambridge students, rewritten for the 2027-2029 syllabus; every message quoted as SIMPL writes it now.

Look and feel

  • Colors reviewed for legibility in both themes: strings green, numbers purple, every text at least 4.5:1 contrast.
  • Empty panels say what will appear in them; scroll bars appear only when needed; the open Inspector tab stands out; the number of the cursor's line is shown in full-strength text.
  • About lists the features in four groups.

Programs

  • Tetromino Tumble has a new look (panels, a sidebar with score, level, next piece and keys). Same gameplay and scores. See Upgrading from 1.0 to get it.

Fixed

  • The IDE did not start with Tk 9.
  • A line starting with the word EOF silently ended the program.
  • A selection was hidden under the line highlights.
  • Undo after opening a file emptied the editor; Redo after New brought the old program back.
  • Paste did not replace the selected text (Linux); Ctrl+Y pasted instead of redoing, Ctrl+W cut, Ctrl+O split the line (Linux).
  • F10 also opened the File menu.
  • Step paused twice on a line with NEW or a method call.
  • A routine of your program called by a library was reported as an error in the library.
  • Saving a new program while paused broke stepping.
  • Run Selection highlighted the wrong words in an error.
  • The mouse wheel over the line numbers did not scroll the editor.
  • Table headings and selected console text were hard to read.
  • A minimized User Manual stayed in the taskbar when F1 asked for it.
  • The manual's contents did not follow the last sections, and its bar showed only symbols at first.
  • The printed page colored numbers inside strings and comments.

SIMPL 1.2 is out! It completes pointers, makes several error messages say more clearly what to do, and opens a place to meet other SIMPL users. Programs written for SIMPL 1.1 run unchanged, with a few small exceptions listed below.

What's new

Pointers, complete

A pointer kept in a record field or an array element can now be followed directly, to read and to write, so a chain of records reads just as you would draw it:

OUTPUT First.NextNode^.Name
First.NextNode^.NextNode^.Name ← "Cleo"
Current ← ^First
WHILE Current <> NULL
    OUTPUT Current^.Name
    Current ← Current^.NextNode
ENDWHILE

NULL is the pointer that points nowhere: P ← NULL unlinks a pointer and IF P <> NULL THEN checks it. Two pointers are now equal when they point to the same variable, and every pointer starts as NULL. Chapter 14 of the User Manual shows it all.

Clearer error messages

A ^ in the wrong place now says where it can go, instead of talking about powers. < and > between values that have no order (pointers, records, arrays, sets, TRUE and FALSE) suggest what to compare instead. And a missing comma is now Expected ',', but found..., with the symbol in quotes.

Join the community

SIMPL is made by one independent developer, with no company or advertising behind it: it grows when the people who find it useful tell others about it. Two new entries in the Help menu make that easy: Visit the SIMPL Community opens the community board here on itch.io, the place for questions, ideas and bugs, and Rate SIMPL on AlternativeTo lets you leave a rating or a short review that helps others discover SIMPL. Once you've used SIMPL for a while, it may remind you of them when you close it, at most twice.

And also

Cambridge Strict Mode now reports ^ in every kind of declaration, SIMPLR answers GOTO with no line number with a proper ? SYNTAX ERROR, and the User Manual opens again with the newest Tk 9. Everything is in the full list at the end of this post.

Compatibility

  • NULL is now a reserved word, like TRUE and FALSE: a variable, field or routine named Null must be renamed.
  • Two pointers are compared by the address they hold: P = Q is TRUE when both point to the same variable, or are both null, where 1.1 often said FALSE. Comparing pointers to different types of data now stops the program with an error.
  • A null pointer is printed NULL (it was ^NULL), and some error messages are worded differently.

Upgrading from 1.1

  1. Download SIMPL 1.2 and put the new simpl.exe (Windows) or simpl.appimage (Linux) in the same folder as the old one, replacing it. Your settings, programs and libraries live next to it, and they are kept.
  2. To get the fixed SIMPLR: SIMPL never overwrites a file that is already in your programs folder, because it might be one you changed. So rename the old one first, for example programs/simplr.simpl to simplr_1.1.simpl, then start SIMPL 1.2: it copies the new simplr.simpl into the folder at startup. Your renamed copy stays as it was.

If you put SIMPL 1.2 in a new, empty folder instead, it starts with fresh copies of everything: just copy your own programs over from the old programs folder.

Thanks for using SIMPL! Questions, ideas or bugs are welcome on the community board, and if SIMPL is useful to you, a rating on AlternativeTo helps others find it.

Full list of changes

Pointers

  • ^ after a field or an array element. A pointer kept in a record field or an array element is followed directly, to read and to write: OUTPUT First.NextNode^.Name, First.NextNode^.NextNode^.Name, First.NextNode^.Name ← "Bea", Scores[1]^ ← 80. In 1.1 this was a syntax error, and the pointer had to be copied into a variable first.
  • NULL, the null pointer. P ← NULL makes a pointer point nowhere, and IF P <> NULL THEN checks it, so a loop can follow a chain of records to its end: WHILE Current <> NULL. Every pointer starts as NULL. The Cambridge guide has no word for it, so Cambridge Strict Mode reports it.
  • Comparing pointers. = and <> compare addresses: two pointers are equal when they point to the same variable, or are both null, however each was made. To compare the values they point to, follow them: P^ = Q^. Pointers to different types of data can't be compared.
  • Every pointer starts as a null pointer, also a field declared NextNode : ^TNode and the elements of ARRAY[1:2] OF ^INTEGER: following one says Cannot dereference a null pointer.
  • The User Manual's Chapter 14 shows all of this, with a chain of records followed through its pointers.

Error messages

  • Symbols in quotes. Expected ',', but found identifier 'S' (it was Expected ,,); keywords stay as they are (Expected THEN).
  • ^ in the wrong place. P^^ or F()^ now explain where ^ can go (after a pointer's name, a field or an element), instead of talking about powers; NULL^ and ^NULL have messages of their own. 2 ^ 3 still says to use ** for powers.
  • < and > between values with no order (pointers, records, objects, arrays, sets, TRUE and FALSE) now give a hint that fits: what can be compared instead.

Cambridge Strict Mode

  • ^ in a declaration is now reported wherever a type is written with ^ in place: a field of a TYPE or a CLASS, an array of pointers (ARRAY[1:2] OF ^INTEGER), a parameter, a local variable. The guide names a pointer type first: TYPE TIntPointer = ^INTEGER.
  • NULL is reported (see Pointers).

Community

  • Help > Visit the SIMPL Community opens the community board on itch.io: the place for questions, ideas and bugs, and to talk with me and with other SIMPL users.
  • Help > Rate SIMPL on AlternativeTo: a rating, a short review or a like there helps others discover SIMPL. Both links are also in About.
  • Once you have used SIMPL for a while, closing it may show a short invitation to do the same. It appears at most twice, never right after an error, and Don't ask again turns it off.

Programs

  • SIMPLR: GOTO or GOSUB with no line number now answers ? SYNTAX ERROR (it was ? UNDEFINED LINE 0 ERROR), and GOTO 1 / 0 answers ? DIVISION BY ZERO ERROR. See Upgrading from 1.1 to get it.

Fixed

  • With Tk 9 the User Manual did not open.
  • Assigning a pointer taken from a copied record or array stopped with an internal error.
  • Two pointers to the same variable were not equal.
  • A pointer field or element declared with ^ started empty instead of null.

First.NextNode^.NextNode^.Name ← "Cleo"

???