Skip to content

History

Revisions

  • The install asks which package version (mvx#212) Bundled packages are no longer pinned in the build. The install offers each package's latest stable release, the newest newer release at each less-stable level, and dev; takes the latest stable when nobody is at the terminal; and MVX_PACKAGE_VERSION_<pkg> pins an exact version. Also corrects the platform note: mvpkg now publishes an arm64 build as well.

    @gheydon gheydon committed Sep 17, 2026
    6edfa49
  • packages: git comes with the toolchain, and JSON is no longer a package Two changes in mvx left the wiki describing a layout that no longer exists. mvx#169 removed the package submodules and built the JSON codec into the runtime. So `packages/git' and `packages/json' are not paths any more, and JSONENCODE/JSONDECODE are not a package: they are compiled into libmvxrt, need no configuration, and `-DMVX_JSON=OFF' is not an option the build has. MVX_PACKAGES defaults to `http' alone, not `json' or `json;http'. mvx#198 filled the gap that left behind. git had gone from the tree without arriving anywhere else, so an installed mvx had no GIT at all. `cmake --install' now downloads the published MVPKG and git packages -- prebuilt, at pinned versions, each checked against the checksum published beside it -- putting their verbs and libraries in the system account and their commands in <prefix>/bin. What each page was saying: getting-started the install table listed neither mvx-git nor the packages packages MVX_PACKAGES "defaults to json"; the JSON codec offered as the reference package; "a real install WOULD copy bin/ commands into a system bin directory", which it now does intrinsics JSONENCODE/JSONDECODE "provided by the json package" files "-DMVX_JSON=OFF leaves it out" git mvx-git "built ... into packages/git/bin/" Two uses of the word submodule are deliberately untouched, being a different thing entirely: an ACCOUNT carrying a git submodule (git.md), and the main repo checking this wiki out under docs/ (tooling.md). The Linux-x86-64-only caveat is stated where a reader meets it, because the install warns and carries on rather than failing: on any other platform the toolchain installs without the packages, and a reader who is not told that finds a missing GIT and nothing explaining it.

    @gheydon gheydon committed Sep 12, 2026
    aa9dff5
  • objects: replace the OpenQM description with its actual syntax The page described OpenQM "in shape only" because its documentation site was down, and second-hand accounts turned out to be wrong in ways that mattered. Read out of its GPL source instead (ScarletDME, the maintained fork of the Ladybridge release, GPL-2.0 -- the same licence as MVX): CLASS name [MAX.ARGS n] [INHERITS class1, class2, ...] PUBLIC FUNCTION / SUB / SUBROUTINE, and PRIVATE GET and SET give properties -- the compiler treats GET as a public function and SET as a public subroutine CREATE.OBJECT is the constructor, and must be a PUBLIC SUBROUTINE ME is the self-reference, with its own opcode OBJECT(name, args...) instantiates -> is member access, tokenised TKN_OBJREF from '-' followed by '>' INHERITS takes a LIST, so inheritance is multiple Three of those change the note rather than decorate it: - GET/SET is a real answer to the second failure in section 1, and a better one than the public slot this note sketches. Recorded as the first thing to decide if this ever becomes a proposal, with its cost named: every property access becomes a dispatch. - INHERITS disproves what section 7 claimed. That section rejected inheritance because it "forces a vtable and a linker-visible class graph"; OpenQM implements MULTIPLE inheritance by giving each inherited class a private variable of its own name -- delegation, no vtable. The claim is withdrawn in the text and the narrower honest reason put in its place, because a design note that leaves a disproved claim standing is worth less than one that says so. - '->' was derived here from MVX's own lexer before OpenQM's source could be read, and OpenQM tokenises the same two characters. Now stated as convergence from the same constraint rather than left to read as a borrowed convention.

    @gheydon gheydon committed Sep 9, 2026
    1881067
  • objects: bind the theory page to its tracking issue (#195) The page said 'no issue is open'. One is now: mvx#195 tracks the question -- whether the language should name what MV already builds by hand -- not any work, and the status line says so rather than implying something is scheduled. Matches how open-dict.md carries (spike, #25) in its H1.

    @gheydon gheydon committed Sep 9, 2026
    b3e05f8
  • Classes and objects: a theory page An experimental design note on what classes would mean in Pick BASIC. Nothing is built and no issue is open; the page exists so the design can be argued before anyone commits to it. The thesis is that MV already builds objects by hand -- a catalogued subroutine, a named COMMON block and a dynamic array -- and what is missing is instances and a boundary, not classes as such. Prior art was checked rather than recalled: UniVerse BASIC 11.2 has ZERO occurrences of CLASS and UniData's reference has zero, so the comparison is not UV-classes against QM-classes. It is the UV/Pick idiom against OpenQM's class module, and the page weighs both. OpenQM's own syntax is described in shape only, said out loud, because its reference could not be reached. Every claim about MVX cites a file, and each was checked before it was written -- there are no measurements here, so that is the page's only credential. Two of those checks changed the design: - '.' is an identifier character, so ORD.TOTAL is a legal variable name and dot-notation fails the extension bar outright. '->' lexes as Minus Gt, which cannot occur in valid classic code -- the same argument DECISIONS.md already accepted for C-style comments. - mv_copy and mv_clear guard on tag == MV_STR and nothing else, so an object that IS a string is refcounted and released with no runtime change at all, and serialises, prints and diffs for free. That is what makes the value-semantics design cheaper than a new tag, and the rejected alternative says what it costs. Registered in _Sidebar.md under the language page, labelled (theory) there as well as in the H1, so nobody arriving from the nav mistakes it for shipped behaviour.

    @gheydon gheydon committed Sep 9, 2026
    7ee144b
  • #73: mark .mvx <-> .mv-account conversion done (real conversion)

    @gheydon gheydon committed Aug 5, 2026
    e4f3a4f
  • open-dict: cross-platform dict + account interchange design (#25 spike)

    @gheydon gheydon committed Aug 5, 2026
    6a7c808
  • packages: document the native BUILD-PKG verb

    @gheydon gheydon committed Jul 31, 2026
    0fa895c
  • packages: document the ? optional-dependency marker

    @gheydon gheydon committed Jul 31, 2026
    32ad32b
  • LOOP: note the compact single-line WHILE/UNTIL cond DO form

    @gheydon gheydon committed Jul 30, 2026
    ecad611
  • CREATE-FILE registers a VOC file pointer (#71)

    @gheydon gheydon committed Jul 27, 2026
    c28feb0
  • Document TRIM(str, char[, option]) character trimming

    @gheydon gheydon committed Jul 27, 2026
    9416b59
  • Document the http extension package (HTTPGET/HTTPGETFILE)

    @gheydon gheydon committed Jul 27, 2026
    da55871
  • git: mvx-git carries submodules as gitlinks (#66)

    @gheydon gheydon committed Jul 27, 2026
    b45e2b4
  • statements: alphanumeric labels (NAME:) alongside numeric (#65)

    @gheydon gheydon committed Jul 27, 2026
    4ddce45
  • statements: EQU accepted as short spelling of EQUATE (#64)

    @gheydon gheydon committed Jul 27, 2026
    40c386f
  • files: nested TRANS (dict-name target) via the runtime I-type evaluator (#63)

    @gheydon gheydon committed Jul 27, 2026
    9631281
  • files: SORT BY a TRANS column pushes ORDER BY into the co-located JOIN (#53)

    @gheydon gheydon committed Jul 27, 2026
    d934e6b
  • MongoDB: relational mapping, native indexes, WITH/COUNT push-down (#62)

    @gheydon gheydon committed Jul 27, 2026
    34286ac
  • deployment: MongoDB storage driver (#61)

    @gheydon gheydon committed Jul 27, 2026
    21c4de5
  • git: record-git stores in the account's own .git; subdirectory accounts (#58)

    @gheydon gheydon committed Jul 26, 2026
    30ba2bf
  • git: mvx-git now drives the record-git engine directly (#58)

    @gheydon gheydon committed Jul 26, 2026
    82a2bfe
  • terminal: mouse DRAG events (button-held motion) (#57)

    @gheydon gheydon committed Jul 26, 2026
    dd45bcb
  • terminal: document basic mouse support (@(-9)/@(-10), MOUSE()) (#57)

    @gheydon gheydon committed Jul 26, 2026
    5108125
  • files: note the server-side single-statement BUILD-MAP backfill push-down (#56)

    @gheydon gheydon committed Jul 26, 2026
    7fbaf63
  • Docs: BUILD-MAP backfill is batched in a transaction on SQL backends

    @gheydon gheydon committed Jul 26, 2026
    342949e
  • Docs: BUILD-MAP PROGRESS indicator for large backfills

    @gheydon gheydon committed Jul 26, 2026
    5e4710b
  • Docs: package language extensions (ext ABI, EXPORTS/NATIVE, systems, MVX_PACKAGES); JSON is a package

    @gheydon gheydon committed Jul 26, 2026
    6574688
  • Docs: JSON encode/decode, MAPSPEC/MAPFIELD, the shared mapper

    @gheydon gheydon committed Jul 26, 2026
    2103e6a
  • Docs: TRANS translates a multivalued key element-wise

    @gheydon gheydon committed Jul 26, 2026
    52f88b2