Skip to content

main build red: conflict markers left in native_module.rs after diagnostics_channel tail APIs #3864

Closed

Description

@andrewtdiz

Summary

Latest origin/main does not build, which blocks the Node API compatibility/parity sweep from producing current-main evidence.

The current tip contains merge-conflict markers in crates/perry-runtime/src/object/native_module.rs inside cjs_default_export_value.

Local evidence

Current fetched main:

d4f2903fa567 fix(diagnostics_channel): add Node 26 tail APIs (#3858)

Build command:

cargo build --release -p perry -p perry-runtime -p perry-stdlib

Compiler error:

error: this file contains an unclosed delimiter
    --> crates/perry-runtime/src/object/native_module.rs:5255:3
     |
1448 | fn cjs_default_export_value(module_name: &str) -> Option<f64> {
     |                                                               - unclosed delimiter
1449 |     match module_name {
     |                       - unclosed delimiter
...
1455 |         "async_hooks" | "constants" | "os" | "path" | "querystring" | "url" | "util" => {
     |                                                                                         - this delimiter might not be properly closed...

Relevant source excerpt:

1451 <<<<<<< HEAD
1452         "async_hooks" | "constants" | "os" | "path" | "querystring" | "url" | "util" => {
1453 =======
1454 <<<<<<< HEAD
1455         "async_hooks" | "constants" | "os" | "path" | "querystring" | "url" | "util" => {
1456 =======
1457         "async_hooks" | "os" | "path" | "punycode" | "querystring" | "url" | "util" => {
1458 >>>>>>> origin/main
1459 >>>>>>> origin/main
1460             create_cjs_default_namespace(module_name)

Acceptance criteria

  • Remove the conflict markers and choose the intended CJS default namespace module list.
  • cargo build --release -p perry -p perry-runtime -p perry-stdlib succeeds on origin/main.
  • The diagnostics_channel Node 26 tail API tests from fix(diagnostics_channel): add Node 26 tail APIs #3858 still pass.

Activity

  1. andrewtdiz commented on May 31, 2026

    @andrewtdiz
    ContributorAuthor

    Update after the hotfix on current origin/main:

    21246c8c9 hotfix: remove unresolved conflict markers from #3818/#3829 merges (#3863)
    

    cargo build --release -p perry -p perry-runtime -p perry-stdlib is still red. The earlier cjs_default_export_value hunk appears fixed, but another conflict marker remains in crates/perry-runtime/src/object/native_module.rs around namespace keys:

    error: expected one of `!`, `(`, `+`, `::`, `<`, `>`, or `as`, found `"punycode"`
        --> crates/perry-runtime/src/object/native_module.rs:1329:9
         |
    1328 | <<<<<<< HEAD
         |             - expected one of 7 possible tokens
    1329 |         "punycode" => Some(PUNYCODE_NAMESPACE_KEYS),
         |         ^^^^^^^^^^ unexpected token
    

    Source excerpt:

    1326         "querystring" => Some(QUERYSTRING_NAMESPACE_KEYS),
    1327         "querystring.default" => Some(QUERYSTRING_DEFAULT_KEYS),
    1328 <<<<<<< HEAD
    1329         "punycode" => Some(PUNYCODE_NAMESPACE_KEYS),
    1330         "punycode.default" => Some(PUNYCODE_DEFAULT_KEYS),
    1331         "punycode.ucs2" => Some(PUNYCODE_UCS2_KEYS),
    1332 =======
    1333         "timers" => Some(TIMERS_NAMESPACE_KEYS),
    1334 >>>>>>> origin/main
    1335         "os" => Some(OS_NAMESPACE_KEYS),
    

    This still blocks current-main Node API parity evidence; I am continuing the compatibility sweep on the last buildable main and labeling evidence accordingly until origin/main builds again.

  2. andrewtdiz commented on May 31, 2026

    @andrewtdiz
    ContributorAuthor

    I am taking this with #3868 as a focused native-module surface cleanup. Planned scope: remove the remaining committed conflict-marker hunk in native_module.rs, preserve both punycode and timers namespace keys, and verify the repaired base while also fixing the related node:sys default alias identity path.

  3. andrewtdiz commented on May 31, 2026

    @andrewtdiz
    ContributorAuthor

    Implemented in #3874. The PR removes the remaining committed conflict-marker hunk in native_module.rs, preserves both punycode and timers namespace keys, and verifies that the release build succeeds plus the diagnostics_channel tail fixtures from #3858 still pass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions