Skip to content

chore(strucpp): pin v0.6.6 - #1075

Merged
thiagoralves merged 1 commit into
developmentfrom
chore/strucpp-v0.6.6
Sep 2, 2026
Merged

chore(strucpp): pin v0.6.6#1075
thiagoralves merged 1 commit into
developmentfrom
chore/strucpp-v0.6.6

Conversation

@JoaoGSP

@JoaoGSP JoaoGSP commented Sep 2, 2026

Copy link
Copy Markdown
Member

Bumps the pinned STruC++ compiler from v0.6.5 to v0.6.6 in binary-versions.json.

-    "version": "v0.6.5",
+    "version": "v0.6.6",

scripts/download-binaries.ts derives the asset name from this field and resolves it to strucpp-0.6.6.tgz. Verified before opening: the download URL returns HTTP 200, a forced install under Node 22 pins 0.6.6, and the published bundle carries the fixes below. No other change is needed — the script derives the asset name from this field, and electron-builder.json references the extracted strucpp/runtime/include and strucpp/libs paths, which are version-agnostic.

What v0.6.6 brings

A single upstream PR, STruCpp #230 — two language-server resolution defects, RTOP-247 and RTOP-248. Compiler, codegen and the debug table are untouched; this is the LSP only.

A STRUCT field resolved against the global scope. Inside TYPE ... END_TYPE there is no enclosing POU, so the lookup scope was globalScope and a field name matched whatever global happened to share it. Five surfaces in this repo consumed that:

surface before
hover showed the function block's signature
Ctrl/Cmd+click navigated to the function block
rename (F2) rewrote the FUNCTION BLOCK and every reference to it
find-all-references listed the block's references
IsWrappedTypeRequest misclassified the field

The rename case is data loss rather than a cosmetic slip, and it is the reason this bump is worth taking promptly. It is also not function-block-only — any global symbol kind collided, so a field named after a FUNCTION behaved identically.

Member access past an array subscript. myArray[i]. offered the generic body-completion list — keywords plus every global and library symbol — instead of the element type's members. Now covered: inline arrays, named array TYPEs, multi-dimensional arrays, an array reached through a struct field, a TYPE alias naming an array type, ARRAY [*], a dot inside the index expression (arr[s.k].) and a subscripted index (arr[idx[i]].).

Deliberately unchanged upstream: hover and go-to-definition past a subscript still resolve to the base variable. They do the same for a plain non-array struct, so that is the existing behaviour of those surfaces rather than an array defect.

Risk

Low for this repo. The .dt data type code view (DOPE-385/537) is the surface where the struct-field defect was found, so that path is the one worth a look during review — the change makes hover and Ctrl+click on a colliding field answer nothing where they previously answered wrongly.

Verification

Upstream: full compiler suite 2322 passed / 7 skipped, extension suite 282 passed, both tsc clean, all six CI checks green on the release PR (STruCpp #231), including a clean-checkout Extension Build & Test and the packaged Binary Smoke Test.

Both defects were also validated by hand in this editor against a purpose-built project covering every array shape and a struct whose fields are named after a FUNCTION_BLOCK and a FUNCTION.

Mirror of https://github.com/Autonomy-Logic/openplc-web/pull/725

🤖 Generated with Claude Code

https://claude.ai/code/session_011JAMx8mRf2ig4YFfs2gmsM

Summary by CodeRabbit

  • Chores
    • Updated the bundled strucpp binary to version v0.6.6.

Picks up the two language-server resolution fixes released in v0.6.6
(STruCpp #230, RTOP-247 and RTOP-248):

- A STRUCT field named after a global symbol no longer resolves to that
  symbol. It affected hover, go-to-definition, find-all-references and a
  server type query, and most seriously rename — renaming such a field
  rewrote the colliding FUNCTION BLOCK and every reference to it.
- Member access past an array subscript resolves, so `myArray[i].`
  completes the element type's fields instead of offering the generic
  keyword and global list. Covers inline arrays, named array TYPEs,
  multi-dimensional arrays, arrays reached through a struct field,
  aliases naming an array type, and `ARRAY [*]`.

`scripts/download-binaries.ts` derives the asset name from this field and
resolves it to `strucpp-0.6.6.tgz`. Verified: the URL returns HTTP 200,
a forced install pins 0.6.6, and the published bundle carries the fixes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011JAMx8mRf2ig4YFfs2gmsM
@coderabbitai

coderabbitai Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 4ae461a5-c50b-4529-b305-4f7a85c45278

📥 Commits

Reviewing files that changed from the base of the PR and between b2f1787 and 60e9855.

📒 Files selected for processing (1)
  • binary-versions.json

Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review.


Walkthrough

The strucpp entry in binary-versions.json updates from v0.6.5 to v0.6.6.

Changes

strucpp version update

Layer / File(s) Summary
Update binary manifest
binary-versions.json
The strucpp version changes from v0.6.5 to v0.6.6.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to 60e98

This change updates the bundled STruC++ compiler from v0.6.5 to v0.6.6 without changing repository integration paths or behavior beyond the upstream fixes; no actionable merge-blocking risk remains.

Suggested reviewers: thiagoralves, dcoutinho1328

Poem

A rabbit checks the version line
New strucpp numbers neatly shine
From six-five to six-six bright
The manifest now reads right
Hop, hop, the update is light

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely identifies the version pin update for STruC++ from the changeset.
Description check ✅ Passed The description clearly explains the version change, affected upstream fixes, risk, scope, and verification results. It does not reproduce the template headings or DOD checklist, but it provides the r…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description clearly explains the version change, affected upstream fixes, risk, scope, and verification results. It does not reproduce the template headings or DOD checklist, but it provides the required change and validation information in sufficient detail.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/strucpp-v0.6.6

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@thiagoralves
thiagoralves merged commit 58f6d77 into development Sep 2, 2026
12 checks passed
@thiagoralves
thiagoralves deleted the chore/strucpp-v0.6.6 branch September 2, 2026 13:48
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