Skip to content

[wasm] Integrate naot-llvm into workload manifest - #101801

Closed
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk
Closed

[wasm] Integrate naot-llvm into workload manifest#101801
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk

Conversation

@maraf

@marafmaraf commented May 2, 2024

Copy link
Copy Markdown
Member

TODO

  • Don't re-enable browser workload from emscripten workload manifest
  • Add WBT test
    • Setup NativeAOT-LLVM dependencies on Helix
    • Wasi
    • Browser
  • Needs to drop ImportRuntimeIlcPackageTarget target override in naot-llvm
  • Split the version property out to separate file to make it overridable by automation
  • Update Microsoft.NETCore.App (KnownFrameworkReference) version to correct version of JS interop generator or ship the generator other way (fixed in naot branch)
  • Prepare gh action to update the version
  • Should we print some message/warning about experimental feature?
  • Should we once in a while check for newer version LLVM packages?

An alternative approach as a result for this experimentation

<UsingBrowserRuntimeWorkload>false</UsingBrowserRuntimeWorkload>
<UsingWasiRuntimeWorkload>false</UsingWasiRuntimeWorkload>
<UsingEmscriptenWorkload>true</UsingEmscriptenWorkload>

In combination with current NativeAOT-LLVM setup these props will allow to use emscripten workload with NativeAOT-LLVM

@marafmaraf added arch-wasm WebAssembly architecture area-Build-mono labels May 2, 2024
@marafmaraf added this to the 9.0.0 milestone May 2, 2024
@marafmaraf self-assigned this May 2, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@maraf

Copy link
Copy Markdown
MemberAuthor

@am11

am11 commented Jun 21, 2024

Copy link
Copy Markdown
Member

Prepare gh action to update the version
Should we once in a while check for newer version LLVM packages?

Maybe @dotnet/runtime-infrastructure might have ideas but sounds like it could use DARC subscription for runtimelab -> runtime package sync (like the regular code flow), instead of a standalone GH action?

</PropertyGroup>

<ItemGroup Condition="'$(_IsUsingNativeAOT)' == 'true' and ('$(RuntimeIdentifier)' == 'browser-wasm' or '$(RuntimeIdentifier)' == 'wasi-wasm')">
<KnownILCompilerPack Remove="Microsoft.DotNet.ILCompiler" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is me being nit-picky - I would move this down near where we set KnownRuntimePack and the like.

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

runtimelab and the runtime experimental feed does not have infrastructure for servicing.

I do not think that introducing a dependency on runtimelab from dotnet/runtime is a good idea. If you really want to do that, you will have to work through the impact on servicing workflows (and likely introduce a bunch of extra infrastructure and process for dotnet/runtimelab to make that work).

@jkotas

Copy link
Copy Markdown
Member

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

@maraf

maraf commented Jul 9, 2024

Copy link
Copy Markdown
MemberAuthor

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

We don't want to promote the runtimelab project to shipping with dotnet.
The goal is to make the integration easier. Primarily by enabling usage of our build of emscripten and remove the need for disabling workload resolvers, but since the deeper integration on wasm scope worked, I tried to go deeper. We have the wasm-experimental workload which seemed like a reasonable place to introduce such integration.

Anyway, if the current scope is too deep, I'm happy to reduce it to follow the original goals.

@jkotas

Copy link
Copy Markdown
Member

It is fine to make small target changes in dotnet/runtime repo to support the projects that we run in runtimelab.

dotnet/runtime repo should not be taking dependencies on runtimelab artifacts or feeds. Referencing https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental feed in dotnet/runtime is a red flag. runtimelab can reference dotnet/runtime feeds, but not the other way around.

@dotnet-policy-servicedotnet-policy-serviceBot removed this from the 9.0.0 milestone Aug 8, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@marafmaraf reopened this Aug 14, 2024
# Conflicts:
#	eng/Versions.props
#	eng/testing/scenarios/BuildWasmAppsJobsList.txt
#	src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
<Project>
<PropertyGroup>
<_IsUsingNativeAOT Condition="'$(PublishAot)' == 'true'">true</_IsUsingNativeAOT>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we not use PublishAot == true condition directly? MSBuild evaluates it the same way (since there is no use in any target), so it seems redundant.

@marafmarafAug 14, 2024

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

We can. I wanted to extract it, because we weren't sure if using PublishAot for this highly experimental thing is the right choice.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 14, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@maraf@am11@jkotas@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[wasm] Integrate naot-llvm into workload manifest by maraf · Pull Request #101801 · dotnet/runtime · GitHub
Skip to content

[wasm] Integrate naot-llvm into workload manifest - #101801

Closed
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk
Closed

[wasm] Integrate naot-llvm into workload manifest#101801
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk

Conversation

@maraf

@marafmaraf commented May 2, 2024

Copy link
Copy Markdown
Member

TODO

  • Don't re-enable browser workload from emscripten workload manifest
  • Add WBT test
    • Setup NativeAOT-LLVM dependencies on Helix
    • Wasi
    • Browser
  • Needs to drop ImportRuntimeIlcPackageTarget target override in naot-llvm
  • Split the version property out to separate file to make it overridable by automation
  • Update Microsoft.NETCore.App (KnownFrameworkReference) version to correct version of JS interop generator or ship the generator other way (fixed in naot branch)
  • Prepare gh action to update the version
  • Should we print some message/warning about experimental feature?
  • Should we once in a while check for newer version LLVM packages?

An alternative approach as a result for this experimentation

<UsingBrowserRuntimeWorkload>false</UsingBrowserRuntimeWorkload>
<UsingWasiRuntimeWorkload>false</UsingWasiRuntimeWorkload>
<UsingEmscriptenWorkload>true</UsingEmscriptenWorkload>

In combination with current NativeAOT-LLVM setup these props will allow to use emscripten workload with NativeAOT-LLVM

@marafmaraf added arch-wasm WebAssembly architecture area-Build-mono labels May 2, 2024
@marafmaraf added this to the 9.0.0 milestone May 2, 2024
@marafmaraf self-assigned this May 2, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@maraf

Copy link
Copy Markdown
MemberAuthor

@am11

am11 commented Jun 21, 2024

Copy link
Copy Markdown
Member

Prepare gh action to update the version
Should we once in a while check for newer version LLVM packages?

Maybe @dotnet/runtime-infrastructure might have ideas but sounds like it could use DARC subscription for runtimelab -> runtime package sync (like the regular code flow), instead of a standalone GH action?

</PropertyGroup>

<ItemGroup Condition="'$(_IsUsingNativeAOT)' == 'true' and ('$(RuntimeIdentifier)' == 'browser-wasm' or '$(RuntimeIdentifier)' == 'wasi-wasm')">
<KnownILCompilerPack Remove="Microsoft.DotNet.ILCompiler" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is me being nit-picky - I would move this down near where we set KnownRuntimePack and the like.

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

runtimelab and the runtime experimental feed does not have infrastructure for servicing.

I do not think that introducing a dependency on runtimelab from dotnet/runtime is a good idea. If you really want to do that, you will have to work through the impact on servicing workflows (and likely introduce a bunch of extra infrastructure and process for dotnet/runtimelab to make that work).

@jkotas

Copy link
Copy Markdown
Member

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

@maraf

maraf commented Jul 9, 2024

Copy link
Copy Markdown
MemberAuthor

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

We don't want to promote the runtimelab project to shipping with dotnet.
The goal is to make the integration easier. Primarily by enabling usage of our build of emscripten and remove the need for disabling workload resolvers, but since the deeper integration on wasm scope worked, I tried to go deeper. We have the wasm-experimental workload which seemed like a reasonable place to introduce such integration.

Anyway, if the current scope is too deep, I'm happy to reduce it to follow the original goals.

@jkotas

Copy link
Copy Markdown
Member

It is fine to make small target changes in dotnet/runtime repo to support the projects that we run in runtimelab.

dotnet/runtime repo should not be taking dependencies on runtimelab artifacts or feeds. Referencing https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental feed in dotnet/runtime is a red flag. runtimelab can reference dotnet/runtime feeds, but not the other way around.

@dotnet-policy-servicedotnet-policy-serviceBot removed this from the 9.0.0 milestone Aug 8, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@marafmaraf reopened this Aug 14, 2024
# Conflicts:
#	eng/Versions.props
#	eng/testing/scenarios/BuildWasmAppsJobsList.txt
#	src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
<Project>
<PropertyGroup>
<_IsUsingNativeAOT Condition="'$(PublishAot)' == 'true'">true</_IsUsingNativeAOT>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we not use PublishAot == true condition directly? MSBuild evaluates it the same way (since there is no use in any target), so it seems redundant.

@marafmarafAug 14, 2024

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

We can. I wanted to extract it, because we weren't sure if using PublishAot for this highly experimental thing is the right choice.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 14, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@maraf@am11@jkotas@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [wasm] Integrate naot-llvm into workload manifest by maraf · Pull Request #101801 · dotnet/runtime · GitHub
Skip to content

[wasm] Integrate naot-llvm into workload manifest - #101801

Closed
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk
Closed

[wasm] Integrate naot-llvm into workload manifest#101801
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk

Conversation

@maraf

@marafmaraf commented May 2, 2024

Copy link
Copy Markdown
Member

TODO

  • Don't re-enable browser workload from emscripten workload manifest
  • Add WBT test
    • Setup NativeAOT-LLVM dependencies on Helix
    • Wasi
    • Browser
  • Needs to drop ImportRuntimeIlcPackageTarget target override in naot-llvm
  • Split the version property out to separate file to make it overridable by automation
  • Update Microsoft.NETCore.App (KnownFrameworkReference) version to correct version of JS interop generator or ship the generator other way (fixed in naot branch)
  • Prepare gh action to update the version
  • Should we print some message/warning about experimental feature?
  • Should we once in a while check for newer version LLVM packages?

An alternative approach as a result for this experimentation

<UsingBrowserRuntimeWorkload>false</UsingBrowserRuntimeWorkload>
<UsingWasiRuntimeWorkload>false</UsingWasiRuntimeWorkload>
<UsingEmscriptenWorkload>true</UsingEmscriptenWorkload>

In combination with current NativeAOT-LLVM setup these props will allow to use emscripten workload with NativeAOT-LLVM

@marafmaraf added arch-wasm WebAssembly architecture area-Build-mono labels May 2, 2024
@marafmaraf added this to the 9.0.0 milestone May 2, 2024
@marafmaraf self-assigned this May 2, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@maraf

Copy link
Copy Markdown
MemberAuthor

@am11

am11 commented Jun 21, 2024

Copy link
Copy Markdown
Member

Prepare gh action to update the version
Should we once in a while check for newer version LLVM packages?

Maybe @dotnet/runtime-infrastructure might have ideas but sounds like it could use DARC subscription for runtimelab -> runtime package sync (like the regular code flow), instead of a standalone GH action?

</PropertyGroup>

<ItemGroup Condition="'$(_IsUsingNativeAOT)' == 'true' and ('$(RuntimeIdentifier)' == 'browser-wasm' or '$(RuntimeIdentifier)' == 'wasi-wasm')">
<KnownILCompilerPack Remove="Microsoft.DotNet.ILCompiler" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is me being nit-picky - I would move this down near where we set KnownRuntimePack and the like.

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

runtimelab and the runtime experimental feed does not have infrastructure for servicing.

I do not think that introducing a dependency on runtimelab from dotnet/runtime is a good idea. If you really want to do that, you will have to work through the impact on servicing workflows (and likely introduce a bunch of extra infrastructure and process for dotnet/runtimelab to make that work).

@jkotas

Copy link
Copy Markdown
Member

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

@maraf

maraf commented Jul 9, 2024

Copy link
Copy Markdown
MemberAuthor

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

We don't want to promote the runtimelab project to shipping with dotnet.
The goal is to make the integration easier. Primarily by enabling usage of our build of emscripten and remove the need for disabling workload resolvers, but since the deeper integration on wasm scope worked, I tried to go deeper. We have the wasm-experimental workload which seemed like a reasonable place to introduce such integration.

Anyway, if the current scope is too deep, I'm happy to reduce it to follow the original goals.

@jkotas

Copy link
Copy Markdown
Member

It is fine to make small target changes in dotnet/runtime repo to support the projects that we run in runtimelab.

dotnet/runtime repo should not be taking dependencies on runtimelab artifacts or feeds. Referencing https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental feed in dotnet/runtime is a red flag. runtimelab can reference dotnet/runtime feeds, but not the other way around.

@dotnet-policy-servicedotnet-policy-serviceBot removed this from the 9.0.0 milestone Aug 8, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@marafmaraf reopened this Aug 14, 2024
# Conflicts:
#	eng/Versions.props
#	eng/testing/scenarios/BuildWasmAppsJobsList.txt
#	src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
<Project>
<PropertyGroup>
<_IsUsingNativeAOT Condition="'$(PublishAot)' == 'true'">true</_IsUsingNativeAOT>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we not use PublishAot == true condition directly? MSBuild evaluates it the same way (since there is no use in any target), so it seems redundant.

@marafmarafAug 14, 2024

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

We can. I wanted to extract it, because we weren't sure if using PublishAot for this highly experimental thing is the right choice.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 14, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@maraf@am11@jkotas@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [wasm] Integrate naot-llvm into workload manifest by maraf · Pull Request #101801 · dotnet/runtime · GitHub
Skip to content

[wasm] Integrate naot-llvm into workload manifest - #101801

Closed
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk
Closed

[wasm] Integrate naot-llvm into workload manifest#101801
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk

Conversation

@maraf

@marafmaraf commented May 2, 2024

Copy link
Copy Markdown
Member

TODO

  • Don't re-enable browser workload from emscripten workload manifest
  • Add WBT test
    • Setup NativeAOT-LLVM dependencies on Helix
    • Wasi
    • Browser
  • Needs to drop ImportRuntimeIlcPackageTarget target override in naot-llvm
  • Split the version property out to separate file to make it overridable by automation
  • Update Microsoft.NETCore.App (KnownFrameworkReference) version to correct version of JS interop generator or ship the generator other way (fixed in naot branch)
  • Prepare gh action to update the version
  • Should we print some message/warning about experimental feature?
  • Should we once in a while check for newer version LLVM packages?

An alternative approach as a result for this experimentation

<UsingBrowserRuntimeWorkload>false</UsingBrowserRuntimeWorkload>
<UsingWasiRuntimeWorkload>false</UsingWasiRuntimeWorkload>
<UsingEmscriptenWorkload>true</UsingEmscriptenWorkload>

In combination with current NativeAOT-LLVM setup these props will allow to use emscripten workload with NativeAOT-LLVM

@marafmaraf added arch-wasm WebAssembly architecture area-Build-mono labels May 2, 2024
@marafmaraf added this to the 9.0.0 milestone May 2, 2024
@marafmaraf self-assigned this May 2, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@maraf

Copy link
Copy Markdown
MemberAuthor

@am11

am11 commented Jun 21, 2024

Copy link
Copy Markdown
Member

Prepare gh action to update the version
Should we once in a while check for newer version LLVM packages?

Maybe @dotnet/runtime-infrastructure might have ideas but sounds like it could use DARC subscription for runtimelab -> runtime package sync (like the regular code flow), instead of a standalone GH action?

</PropertyGroup>

<ItemGroup Condition="'$(_IsUsingNativeAOT)' == 'true' and ('$(RuntimeIdentifier)' == 'browser-wasm' or '$(RuntimeIdentifier)' == 'wasi-wasm')">
<KnownILCompilerPack Remove="Microsoft.DotNet.ILCompiler" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is me being nit-picky - I would move this down near where we set KnownRuntimePack and the like.

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

runtimelab and the runtime experimental feed does not have infrastructure for servicing.

I do not think that introducing a dependency on runtimelab from dotnet/runtime is a good idea. If you really want to do that, you will have to work through the impact on servicing workflows (and likely introduce a bunch of extra infrastructure and process for dotnet/runtimelab to make that work).

@jkotas

Copy link
Copy Markdown
Member

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

@maraf

maraf commented Jul 9, 2024

Copy link
Copy Markdown
MemberAuthor

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

We don't want to promote the runtimelab project to shipping with dotnet.
The goal is to make the integration easier. Primarily by enabling usage of our build of emscripten and remove the need for disabling workload resolvers, but since the deeper integration on wasm scope worked, I tried to go deeper. We have the wasm-experimental workload which seemed like a reasonable place to introduce such integration.

Anyway, if the current scope is too deep, I'm happy to reduce it to follow the original goals.

@jkotas

Copy link
Copy Markdown
Member

It is fine to make small target changes in dotnet/runtime repo to support the projects that we run in runtimelab.

dotnet/runtime repo should not be taking dependencies on runtimelab artifacts or feeds. Referencing https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental feed in dotnet/runtime is a red flag. runtimelab can reference dotnet/runtime feeds, but not the other way around.

@dotnet-policy-servicedotnet-policy-serviceBot removed this from the 9.0.0 milestone Aug 8, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@marafmaraf reopened this Aug 14, 2024
# Conflicts:
#	eng/Versions.props
#	eng/testing/scenarios/BuildWasmAppsJobsList.txt
#	src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
<Project>
<PropertyGroup>
<_IsUsingNativeAOT Condition="'$(PublishAot)' == 'true'">true</_IsUsingNativeAOT>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we not use PublishAot == true condition directly? MSBuild evaluates it the same way (since there is no use in any target), so it seems redundant.

@marafmarafAug 14, 2024

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

We can. I wanted to extract it, because we weren't sure if using PublishAot for this highly experimental thing is the right choice.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 14, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@maraf@am11@jkotas@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [wasm] Integrate naot-llvm into workload manifest by maraf · Pull Request #101801 · dotnet/runtime · GitHub
Skip to content

[wasm] Integrate naot-llvm into workload manifest - #101801

Closed
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk
Closed

[wasm] Integrate naot-llvm into workload manifest#101801
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk

Conversation

@maraf

@marafmaraf commented May 2, 2024

Copy link
Copy Markdown
Member

TODO

  • Don't re-enable browser workload from emscripten workload manifest
  • Add WBT test
    • Setup NativeAOT-LLVM dependencies on Helix
    • Wasi
    • Browser
  • Needs to drop ImportRuntimeIlcPackageTarget target override in naot-llvm
  • Split the version property out to separate file to make it overridable by automation
  • Update Microsoft.NETCore.App (KnownFrameworkReference) version to correct version of JS interop generator or ship the generator other way (fixed in naot branch)
  • Prepare gh action to update the version
  • Should we print some message/warning about experimental feature?
  • Should we once in a while check for newer version LLVM packages?

An alternative approach as a result for this experimentation

<UsingBrowserRuntimeWorkload>false</UsingBrowserRuntimeWorkload>
<UsingWasiRuntimeWorkload>false</UsingWasiRuntimeWorkload>
<UsingEmscriptenWorkload>true</UsingEmscriptenWorkload>

In combination with current NativeAOT-LLVM setup these props will allow to use emscripten workload with NativeAOT-LLVM

@marafmaraf added arch-wasm WebAssembly architecture area-Build-mono labels May 2, 2024
@marafmaraf added this to the 9.0.0 milestone May 2, 2024
@marafmaraf self-assigned this May 2, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@maraf

Copy link
Copy Markdown
MemberAuthor

@am11

am11 commented Jun 21, 2024

Copy link
Copy Markdown
Member

Prepare gh action to update the version
Should we once in a while check for newer version LLVM packages?

Maybe @dotnet/runtime-infrastructure might have ideas but sounds like it could use DARC subscription for runtimelab -> runtime package sync (like the regular code flow), instead of a standalone GH action?

</PropertyGroup>

<ItemGroup Condition="'$(_IsUsingNativeAOT)' == 'true' and ('$(RuntimeIdentifier)' == 'browser-wasm' or '$(RuntimeIdentifier)' == 'wasi-wasm')">
<KnownILCompilerPack Remove="Microsoft.DotNet.ILCompiler" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is me being nit-picky - I would move this down near where we set KnownRuntimePack and the like.

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

runtimelab and the runtime experimental feed does not have infrastructure for servicing.

I do not think that introducing a dependency on runtimelab from dotnet/runtime is a good idea. If you really want to do that, you will have to work through the impact on servicing workflows (and likely introduce a bunch of extra infrastructure and process for dotnet/runtimelab to make that work).

@jkotas

Copy link
Copy Markdown
Member

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

@maraf

maraf commented Jul 9, 2024

Copy link
Copy Markdown
MemberAuthor

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

We don't want to promote the runtimelab project to shipping with dotnet.
The goal is to make the integration easier. Primarily by enabling usage of our build of emscripten and remove the need for disabling workload resolvers, but since the deeper integration on wasm scope worked, I tried to go deeper. We have the wasm-experimental workload which seemed like a reasonable place to introduce such integration.

Anyway, if the current scope is too deep, I'm happy to reduce it to follow the original goals.

@jkotas

Copy link
Copy Markdown
Member

It is fine to make small target changes in dotnet/runtime repo to support the projects that we run in runtimelab.

dotnet/runtime repo should not be taking dependencies on runtimelab artifacts or feeds. Referencing https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental feed in dotnet/runtime is a red flag. runtimelab can reference dotnet/runtime feeds, but not the other way around.

@dotnet-policy-servicedotnet-policy-serviceBot removed this from the 9.0.0 milestone Aug 8, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@marafmaraf reopened this Aug 14, 2024
# Conflicts:
#	eng/Versions.props
#	eng/testing/scenarios/BuildWasmAppsJobsList.txt
#	src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
<Project>
<PropertyGroup>
<_IsUsingNativeAOT Condition="'$(PublishAot)' == 'true'">true</_IsUsingNativeAOT>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we not use PublishAot == true condition directly? MSBuild evaluates it the same way (since there is no use in any target), so it seems redundant.

@marafmarafAug 14, 2024

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

We can. I wanted to extract it, because we weren't sure if using PublishAot for this highly experimental thing is the right choice.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 14, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@maraf@am11@jkotas@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [wasm] Integrate naot-llvm into workload manifest by maraf · Pull Request #101801 · dotnet/runtime · GitHub
Skip to content

[wasm] Integrate naot-llvm into workload manifest - #101801

Closed
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk
Closed

[wasm] Integrate naot-llvm into workload manifest#101801
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk

Conversation

@maraf

@marafmaraf commented May 2, 2024

Copy link
Copy Markdown
Member

TODO

  • Don't re-enable browser workload from emscripten workload manifest
  • Add WBT test
    • Setup NativeAOT-LLVM dependencies on Helix
    • Wasi
    • Browser
  • Needs to drop ImportRuntimeIlcPackageTarget target override in naot-llvm
  • Split the version property out to separate file to make it overridable by automation
  • Update Microsoft.NETCore.App (KnownFrameworkReference) version to correct version of JS interop generator or ship the generator other way (fixed in naot branch)
  • Prepare gh action to update the version
  • Should we print some message/warning about experimental feature?
  • Should we once in a while check for newer version LLVM packages?

An alternative approach as a result for this experimentation

<UsingBrowserRuntimeWorkload>false</UsingBrowserRuntimeWorkload>
<UsingWasiRuntimeWorkload>false</UsingWasiRuntimeWorkload>
<UsingEmscriptenWorkload>true</UsingEmscriptenWorkload>

In combination with current NativeAOT-LLVM setup these props will allow to use emscripten workload with NativeAOT-LLVM

@marafmaraf added arch-wasm WebAssembly architecture area-Build-mono labels May 2, 2024
@marafmaraf added this to the 9.0.0 milestone May 2, 2024
@marafmaraf self-assigned this May 2, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@maraf

Copy link
Copy Markdown
MemberAuthor

@am11

am11 commented Jun 21, 2024

Copy link
Copy Markdown
Member

Prepare gh action to update the version
Should we once in a while check for newer version LLVM packages?

Maybe @dotnet/runtime-infrastructure might have ideas but sounds like it could use DARC subscription for runtimelab -> runtime package sync (like the regular code flow), instead of a standalone GH action?

</PropertyGroup>

<ItemGroup Condition="'$(_IsUsingNativeAOT)' == 'true' and ('$(RuntimeIdentifier)' == 'browser-wasm' or '$(RuntimeIdentifier)' == 'wasi-wasm')">
<KnownILCompilerPack Remove="Microsoft.DotNet.ILCompiler" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is me being nit-picky - I would move this down near where we set KnownRuntimePack and the like.

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

runtimelab and the runtime experimental feed does not have infrastructure for servicing.

I do not think that introducing a dependency on runtimelab from dotnet/runtime is a good idea. If you really want to do that, you will have to work through the impact on servicing workflows (and likely introduce a bunch of extra infrastructure and process for dotnet/runtimelab to make that work).

@jkotas

Copy link
Copy Markdown
Member

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

@maraf

maraf commented Jul 9, 2024

Copy link
Copy Markdown
MemberAuthor

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

We don't want to promote the runtimelab project to shipping with dotnet.
The goal is to make the integration easier. Primarily by enabling usage of our build of emscripten and remove the need for disabling workload resolvers, but since the deeper integration on wasm scope worked, I tried to go deeper. We have the wasm-experimental workload which seemed like a reasonable place to introduce such integration.

Anyway, if the current scope is too deep, I'm happy to reduce it to follow the original goals.

@jkotas

Copy link
Copy Markdown
Member

It is fine to make small target changes in dotnet/runtime repo to support the projects that we run in runtimelab.

dotnet/runtime repo should not be taking dependencies on runtimelab artifacts or feeds. Referencing https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental feed in dotnet/runtime is a red flag. runtimelab can reference dotnet/runtime feeds, but not the other way around.

@dotnet-policy-servicedotnet-policy-serviceBot removed this from the 9.0.0 milestone Aug 8, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@marafmaraf reopened this Aug 14, 2024
# Conflicts:
#	eng/Versions.props
#	eng/testing/scenarios/BuildWasmAppsJobsList.txt
#	src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
<Project>
<PropertyGroup>
<_IsUsingNativeAOT Condition="'$(PublishAot)' == 'true'">true</_IsUsingNativeAOT>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we not use PublishAot == true condition directly? MSBuild evaluates it the same way (since there is no use in any target), so it seems redundant.

@marafmarafAug 14, 2024

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

We can. I wanted to extract it, because we weren't sure if using PublishAot for this highly experimental thing is the right choice.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 14, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@maraf@am11@jkotas@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [wasm] Integrate naot-llvm into workload manifest by maraf · Pull Request #101801 · dotnet/runtime · GitHub
Skip to content

[wasm] Integrate naot-llvm into workload manifest - #101801

Closed
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk
Closed

[wasm] Integrate naot-llvm into workload manifest#101801
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk

Conversation

@maraf

@marafmaraf commented May 2, 2024

Copy link
Copy Markdown
Member

TODO

  • Don't re-enable browser workload from emscripten workload manifest
  • Add WBT test
    • Setup NativeAOT-LLVM dependencies on Helix
    • Wasi
    • Browser
  • Needs to drop ImportRuntimeIlcPackageTarget target override in naot-llvm
  • Split the version property out to separate file to make it overridable by automation
  • Update Microsoft.NETCore.App (KnownFrameworkReference) version to correct version of JS interop generator or ship the generator other way (fixed in naot branch)
  • Prepare gh action to update the version
  • Should we print some message/warning about experimental feature?
  • Should we once in a while check for newer version LLVM packages?

An alternative approach as a result for this experimentation

<UsingBrowserRuntimeWorkload>false</UsingBrowserRuntimeWorkload>
<UsingWasiRuntimeWorkload>false</UsingWasiRuntimeWorkload>
<UsingEmscriptenWorkload>true</UsingEmscriptenWorkload>

In combination with current NativeAOT-LLVM setup these props will allow to use emscripten workload with NativeAOT-LLVM

@marafmaraf added arch-wasm WebAssembly architecture area-Build-mono labels May 2, 2024
@marafmaraf added this to the 9.0.0 milestone May 2, 2024
@marafmaraf self-assigned this May 2, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@maraf

Copy link
Copy Markdown
MemberAuthor

@am11

am11 commented Jun 21, 2024

Copy link
Copy Markdown
Member

Prepare gh action to update the version
Should we once in a while check for newer version LLVM packages?

Maybe @dotnet/runtime-infrastructure might have ideas but sounds like it could use DARC subscription for runtimelab -> runtime package sync (like the regular code flow), instead of a standalone GH action?

</PropertyGroup>

<ItemGroup Condition="'$(_IsUsingNativeAOT)' == 'true' and ('$(RuntimeIdentifier)' == 'browser-wasm' or '$(RuntimeIdentifier)' == 'wasi-wasm')">
<KnownILCompilerPack Remove="Microsoft.DotNet.ILCompiler" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is me being nit-picky - I would move this down near where we set KnownRuntimePack and the like.

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

runtimelab and the runtime experimental feed does not have infrastructure for servicing.

I do not think that introducing a dependency on runtimelab from dotnet/runtime is a good idea. If you really want to do that, you will have to work through the impact on servicing workflows (and likely introduce a bunch of extra infrastructure and process for dotnet/runtimelab to make that work).

@jkotas

Copy link
Copy Markdown
Member

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

@maraf

maraf commented Jul 9, 2024

Copy link
Copy Markdown
MemberAuthor

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

We don't want to promote the runtimelab project to shipping with dotnet.
The goal is to make the integration easier. Primarily by enabling usage of our build of emscripten and remove the need for disabling workload resolvers, but since the deeper integration on wasm scope worked, I tried to go deeper. We have the wasm-experimental workload which seemed like a reasonable place to introduce such integration.

Anyway, if the current scope is too deep, I'm happy to reduce it to follow the original goals.

@jkotas

Copy link
Copy Markdown
Member

It is fine to make small target changes in dotnet/runtime repo to support the projects that we run in runtimelab.

dotnet/runtime repo should not be taking dependencies on runtimelab artifacts or feeds. Referencing https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental feed in dotnet/runtime is a red flag. runtimelab can reference dotnet/runtime feeds, but not the other way around.

@dotnet-policy-servicedotnet-policy-serviceBot removed this from the 9.0.0 milestone Aug 8, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@marafmaraf reopened this Aug 14, 2024
# Conflicts:
#	eng/Versions.props
#	eng/testing/scenarios/BuildWasmAppsJobsList.txt
#	src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
<Project>
<PropertyGroup>
<_IsUsingNativeAOT Condition="'$(PublishAot)' == 'true'">true</_IsUsingNativeAOT>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we not use PublishAot == true condition directly? MSBuild evaluates it the same way (since there is no use in any target), so it seems redundant.

@marafmarafAug 14, 2024

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

We can. I wanted to extract it, because we weren't sure if using PublishAot for this highly experimental thing is the right choice.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 14, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@maraf@am11@jkotas@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); [wasm] Integrate naot-llvm into workload manifest by maraf · Pull Request #101801 · dotnet/runtime · GitHub
Skip to content

[wasm] Integrate naot-llvm into workload manifest - #101801

Closed
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk
Closed

[wasm] Integrate naot-llvm into workload manifest#101801
maraf wants to merge 35 commits into
dotnet:mainfrom
maraf:WasmNaotLlvmSdk

Conversation

@maraf

@marafmaraf commented May 2, 2024

Copy link
Copy Markdown
Member

TODO

  • Don't re-enable browser workload from emscripten workload manifest
  • Add WBT test
    • Setup NativeAOT-LLVM dependencies on Helix
    • Wasi
    • Browser
  • Needs to drop ImportRuntimeIlcPackageTarget target override in naot-llvm
  • Split the version property out to separate file to make it overridable by automation
  • Update Microsoft.NETCore.App (KnownFrameworkReference) version to correct version of JS interop generator or ship the generator other way (fixed in naot branch)
  • Prepare gh action to update the version
  • Should we print some message/warning about experimental feature?
  • Should we once in a while check for newer version LLVM packages?

An alternative approach as a result for this experimentation

<UsingBrowserRuntimeWorkload>false</UsingBrowserRuntimeWorkload>
<UsingWasiRuntimeWorkload>false</UsingWasiRuntimeWorkload>
<UsingEmscriptenWorkload>true</UsingEmscriptenWorkload>

In combination with current NativeAOT-LLVM setup these props will allow to use emscripten workload with NativeAOT-LLVM

@marafmaraf added arch-wasm WebAssembly architecture area-Build-mono labels May 2, 2024
@marafmaraf added this to the 9.0.0 milestone May 2, 2024
@marafmaraf self-assigned this May 2, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@maraf

Copy link
Copy Markdown
MemberAuthor

@am11

am11 commented Jun 21, 2024

Copy link
Copy Markdown
Member

Prepare gh action to update the version
Should we once in a while check for newer version LLVM packages?

Maybe @dotnet/runtime-infrastructure might have ideas but sounds like it could use DARC subscription for runtimelab -> runtime package sync (like the regular code flow), instead of a standalone GH action?

</PropertyGroup>

<ItemGroup Condition="'$(_IsUsingNativeAOT)' == 'true' and ('$(RuntimeIdentifier)' == 'browser-wasm' or '$(RuntimeIdentifier)' == 'wasi-wasm')">
<KnownILCompilerPack Remove="Microsoft.DotNet.ILCompiler" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is me being nit-picky - I would move this down near where we set KnownRuntimePack and the like.

@jkotasjkotas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

runtimelab and the runtime experimental feed does not have infrastructure for servicing.

I do not think that introducing a dependency on runtimelab from dotnet/runtime is a good idea. If you really want to do that, you will have to work through the impact on servicing workflows (and likely introduce a bunch of extra infrastructure and process for dotnet/runtimelab to make that work).

@jkotas

Copy link
Copy Markdown
Member

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

@maraf

maraf commented Jul 9, 2024

Copy link
Copy Markdown
MemberAuthor

If you would like to promote the current runtimelab project to "shipping with dotnet/runtime", the proper way to do that is by integrating it to dotnet/runtime.

We don't want to promote the runtimelab project to shipping with dotnet.
The goal is to make the integration easier. Primarily by enabling usage of our build of emscripten and remove the need for disabling workload resolvers, but since the deeper integration on wasm scope worked, I tried to go deeper. We have the wasm-experimental workload which seemed like a reasonable place to introduce such integration.

Anyway, if the current scope is too deep, I'm happy to reduce it to follow the original goals.

@jkotas

Copy link
Copy Markdown
Member

It is fine to make small target changes in dotnet/runtime repo to support the projects that we run in runtimelab.

dotnet/runtime repo should not be taking dependencies on runtimelab artifacts or feeds. Referencing https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental feed in dotnet/runtime is a red flag. runtimelab can reference dotnet/runtime feeds, but not the other way around.

@dotnet-policy-servicedotnet-policy-serviceBot removed this from the 9.0.0 milestone Aug 8, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@marafmaraf reopened this Aug 14, 2024
# Conflicts:
#	eng/Versions.props
#	eng/testing/scenarios/BuildWasmAppsJobsList.txt
#	src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
<Project>
<PropertyGroup>
<_IsUsingNativeAOT Condition="'$(PublishAot)' == 'true'">true</_IsUsingNativeAOT>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we not use PublishAot == true condition directly? MSBuild evaluates it the same way (since there is no use in any target), so it seems redundant.

@marafmarafAug 14, 2024

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

We can. I wanted to extract it, because we weren't sure if using PublishAot for this highly experimental thing is the right choice.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Oct 14, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@maraf@am11@jkotas@lewing@steveisok