Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Implement "defaulted" instantiation arguments

Open
#42 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
rust, wasm
Domain
compilers, tooling

Research direction

The issue names no files or tests. Start by locating wac's handling of new expressions and unlocked-dep or locked-dep imports, then trace dependency resolution and instantiation. Done means omitted dependency arguments are resolved recursively, shared instances are created, exports are projected into arguments, and unresolved transitive dependencies produce an error.

Written by the indexing model from the issue text.

Description

If a component being instantiated with a new expression has a unlocked-dep or locked-dep import and the import has not been satisfied by an argument to the new expression, wac should implicitly resolve and instantiate a (shared) instance of the dependency and project into its exports, passing the result as the argument.

Example:

Package foo:bar:

(component
    // ...
   (export "f" (func 0))
)

Package bar:baz:

(component
  (import "unlocked-dep=<foo:bar/f@{>=0.1.0}>" (func))
)

Composition:

let i = new bar:baz { };

Then foo:[email protected] should get resolved and instantiated, f should be aliased from the export, and the alias passed in as the argument for unlocked-dep=<foo:bar/[email protected]>.

The instantiated dependency would either have all of its imports satisfied by implicit imports or by recursively instantiated dependencies for any unlocked-dep and locked-dep imports.

It would be an error if the (transitive) dependencies fail to resolve.

Dominant language
Rust
Stars
207
Forks
41
Avg merge
4d 9m
Merged PRs (30d)
4

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from bytecodealliance/wac

All issues in bytecodealliance/wac

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.