Skip to content

Start-up environment: VERSION(2), SET LIBRARY paths, POPUP(), #INCLUDE loops - #11

Merged
RandomChirp merged 1 commit into
FoxDevCommunity:mainfrom
jefflroberts:startup-environment
Sep 24, 2026
Merged

RandomChirp merged 1 commit into
FoxDevCommunity:mainfrom
jefflroberts:startup-environment

Conversation

@jefflroberts

Copy link
Copy Markdown
Collaborator

Found running a CodeMine application (Shutter Ace) from the IDE; measured in
Visual FoxPro 9 first.

  • VERSION(2) answers 2 in the development environment and 0 in a built
    application, and is a number; programs branch on it to find their source.
    The IDE says which it is through a RUNTIME setting.
  • SET LIBRARY TO codemine.fll with no folder means the one beside the
    application - the project folder - not the library host's own directory.
  • POPUP(cName) answers whether a popup of that name is defined, as well as
    POPUP() naming the active one.
  • A header file that includes itself, or two that include each other, are read
    once each rather than forever; the project source finds a header by name
    wherever in the project it sits.

Verification. The ref_popup_named golden (measured), new cases in crates/foxvm/tests/builtins_system.rs and crates/foxvm/tests/directives.rs. The full VM suite, npm run argforms:check, and the runtime, shared, vfp and reference TypeScript tests pass on this branch.

One of several pull requests split out of work on a CodeMine application (Shutter Ace); each stands on main on its own except where it says otherwise.

🤖 Generated with Claude Code

…E loops

Found running a CodeMine application (Shutter Ace) from the IDE; measured in
Visual FoxPro 9 first.

- VERSION(2) answers 2 in the development environment and 0 in a built
  application, and is a number; programs branch on it to find their source.
  The IDE says which it is through a RUNTIME setting.
- SET LIBRARY TO codemine.fll with no folder means the one beside the
  application - the project folder - not the library host's own directory.
- POPUP(cName) answers whether a popup of that name is defined, as well as
  POPUP() naming the active one.
- A header file that includes itself, or two that include each other, are read
  once each rather than forever; the project source finds a header by name
  wherever in the project it sits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@RandomChirp RandomChirp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Measured in vfp9.exe: VERSION(2) is the number 2 in the development environment, VERSION(3) is "00", VERSION(5) is 900, VERSION(0) and VERSION(6) are error 11. The golden ref_popup_named.prg agrees with the product, the #INCLUDE loop guard reads each header once, and cargo test -p foxvm is green on a merge with main.

I checked the ordering worry with the RUNTIME setting: vm.setSetting runs inside startSession, after loadFoxVm, so runtimeUi.development set by IdeLayout at import time is seen. The IDE answers 2 and the player 0, as intended.

Review generated with Claude Code (Claude Fable 5.1), run against vfp9.exe and the test suites on a merge with main.

@RandomChirp
RandomChirp merged commit ebf7e0f into FoxDevCommunity:main Sep 24, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants