• v1.2.0 54299dd2c4

    patricus released this 2026-10-22 15:14:53 +02:00 | 0 commits to master since this release

    SimpleLang 1.2.0

    Programs compiled with 1.0 or 1.1 keep running unchanged. The bytecode version is now 4, and the VM accepts any older version.

    Language

    • break and continue in while and for loops.
    • Array methods arr.push(x), arr.insert(i, x) and arr.remove(i), checked against the element type when compiling.
    • h == nil works on handles.
    • Negative numbers are allowed in global initializers (float QUIET = -45.0;).
    • float_to_int, plus the str.*, fs.* and sys.* helpers (split/join/trim/replace, read and write whole files, list folders, sys.script_directory(), and more).

    Sound

    • Sounds are held in memory and can be edited while they play: copy, erase, insert, append, paste over, mix, and resize.
    • Built-in effects: gain, normalize, fades, reverse, silence, invert, DC removal, low and high pass, EQ, echo, radio, speed change, resampling, mono/stereo conversion, channel swap and pan.
    • Measuring: peak, RMS, finding the first and last sound, and silent ranges.
    • Saving to .wav, .mp3, .flac and .ogg. Ogg files now load too.
    • Recording from an input device.
    • Device lists and selection: audio_output_devices(), audio_input_devices(), audio_set_output_device(i) and audio_set_input_device(i).

    Accessibility and GUI

    • screen_reader_speak, screen_reader_braille and related natives speak through NVDA, JAWS, System Access or ZDSR, falling back to SAPI.
    • wx gains:
      • key_down, focus and activate events, with key and modifier queries
      • accessible names, roles and values
      • a sound surface, status bars, custom dialogs, text-entry and confirm dialogs, and a save dialog with a suggested name

    VST 3

    • plugin_* natives load VST 3 effects, set their parameters, process sounds offline, and open the plug-in's own editor window.

    Inspector

    • simplelang.inspector.load(path) reads a .slc or .slcbundle and reports its bytecode version, functions, natives, and the modules and DLLs it loads. examples/inspect_demo.sl is a GUI inspector built on it.

    Libraries and installers

    • vcpkg libraries are updated (wxWidgets 3.3.3, libffi 3.8.0), and FLAC and Vorbis are added. Every third-party library ships as a DLL beside slvm.exe.
    • The installers remove old DLLs before installing, so no stale wxWidgets builds are left behind.

    Docs

    • The language reference covers everything above, plus the text-to-speech, audio_convert, shuffle() and multi-line text controls that 1.1 shipped without documentation.
    • The bytecode spec describes the version history and how the new features compile. 1.2 adds no new opcodes.
    Downloads
  • v1.1.1 51dbbd367b

    patricus released this 2026-10-22 13:16:44 +02:00 | 8 commits to master since this release

    Fix: programs compiled with 1.0 work again

    1.1.0 broke every .slc and .slcbundle compiled with 1.0. Compiled programs refer to built-in functions by their position in the VM's native table, and 1.1.0 inserted new natives in the middle of that table. That moved 37 existing natives, so old programs ended up calling the wrong functions. The music player example, for instance, failed at startup with a bogus wx_timer_create error.

    • All 1.0 natives are back at their original positions, and everything added in 1.1 comes after them. Programs compiled with 1.0 run unchanged.

    • The native table is now append-only, and a test checks that every released native keeps its position.

    • The prebuilt music player bundle is rebuilt from current source and includes the volume slider.

    If you compiled anything with 1.1.0, recompile it with 1.1.1. The stdlib files that ship with the installers aren't affected.

    Also includes everything added in 1.1: calling into DLLs, load()-ed modules that can do everything, text-to-speech, and MP3 export.

    Downloads

    • SimpleLangSDK-Setup.exe: compiler (slc, slcmake), VM (slvm), docs, examples and stdlib.

    • SimpleLangRuntime-Setup.exe: just the VM and stdlib, for running compiled programs.

    Downloads