Skip to content

Use latest ILC to AOT-compile ILC - #89655

Merged
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC
Aug 1, 2023
Merged

Use latest ILC to AOT-compile ILC#89655
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC

Conversation

@sbomer

Copy link
Copy Markdown
Member

We need to build with a recent enough ILC that has the fix from #87785. This sets up a dependency on the runtime -> runtime package flow to build using the latest ILC package.

@LakshanFLakshanF 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.

Thanks! I validated that the NativeAOT ILC build with these changes (artifacts\bin\coreclr\windows.x64.Debug\ilc-published) does not cause problems.

Comment threadeng/Version.Details.xml Outdated

@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.

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

sbomerand others added 2 commits July 29, 2023 00:05
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
@sbomer

Copy link
Copy Markdown
MemberAuthor

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

@jkotas

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

We can give it a try. This setup may break when we need to push through a change that makes current native AOT incompatible with older SDK.

@am11

am11 commented Jul 29, 2023

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

@MichalStrehovsky

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

We scrapped the underlying tracking issue due to funding: #67742 (comment). It would be nicer to do it that way as it would avoid any versioning issue, but the LKG approach also has an advantage (we do all testing with the exact configuration that we're shipping).

@MichalStrehovskyMichalStrehovsky 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.

Thank you!

@sbomer

Copy link
Copy Markdown
MemberAuthor

The osx-arm64 build is hitting linker errors during AOT-compile of ILC:

Undefined symbols for architecture arm64:
"_objc_msgSend$AMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$PMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$UTF8String", referenced from:
_DetectDefaultAppleLocaleName in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleNameNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoIntNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleTimeFormatNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$characterAtIndex:", referenced from:

This appears to be because the official build osx machines use XCode 14, which enables an optimization for Objective-C selectors that requires the selector stubs to be generated at link time. The PR builds use XCode 13 which doesn't support this optimization, but we are trying to link with libraries that were produced from XCode 14 (libSystem.Globalization.Native.a from the latest ILCompiler package).

I suspect this has been the case since #88793, which switched official builds but not PR builds over to the macOS 12 agents that come with XCode 14: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md#xcode.
PR builds still use macOS 11 which has XCode 13: https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md#xcode.

I can build with these changes locally using a newer XCode version.

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac? @jkotas@MichalStrehovsky

@jkotas

Copy link
Copy Markdown
Member

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac?

I do not see a problem with that.

@sbomer
sbomer merged commit a6d10a5 into dotnet:mainAug 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Aug 31, 2023
@sbomer
sbomer deleted the overrideILC branch November 3, 2023 18:36
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@sbomer@jkotas@am11@MichalStrehovsky@jkoritzinsky@LakshanF
, '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" + '
Use latest ILC to AOT-compile ILC by sbomer · Pull Request #89655 · dotnet/runtime · GitHub
Skip to content

Use latest ILC to AOT-compile ILC - #89655

Merged
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC
Aug 1, 2023
Merged

Use latest ILC to AOT-compile ILC#89655
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC

Conversation

@sbomer

Copy link
Copy Markdown
Member

We need to build with a recent enough ILC that has the fix from #87785. This sets up a dependency on the runtime -> runtime package flow to build using the latest ILC package.

@LakshanFLakshanF 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.

Thanks! I validated that the NativeAOT ILC build with these changes (artifacts\bin\coreclr\windows.x64.Debug\ilc-published) does not cause problems.

Comment threadeng/Version.Details.xml Outdated

@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.

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

sbomerand others added 2 commits July 29, 2023 00:05
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
@sbomer

Copy link
Copy Markdown
MemberAuthor

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

@jkotas

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

We can give it a try. This setup may break when we need to push through a change that makes current native AOT incompatible with older SDK.

@am11

am11 commented Jul 29, 2023

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

@MichalStrehovsky

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

We scrapped the underlying tracking issue due to funding: #67742 (comment). It would be nicer to do it that way as it would avoid any versioning issue, but the LKG approach also has an advantage (we do all testing with the exact configuration that we're shipping).

@MichalStrehovskyMichalStrehovsky 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.

Thank you!

@sbomer

Copy link
Copy Markdown
MemberAuthor

The osx-arm64 build is hitting linker errors during AOT-compile of ILC:

Undefined symbols for architecture arm64:
"_objc_msgSend$AMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$PMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$UTF8String", referenced from:
_DetectDefaultAppleLocaleName in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleNameNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoIntNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleTimeFormatNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$characterAtIndex:", referenced from:

This appears to be because the official build osx machines use XCode 14, which enables an optimization for Objective-C selectors that requires the selector stubs to be generated at link time. The PR builds use XCode 13 which doesn't support this optimization, but we are trying to link with libraries that were produced from XCode 14 (libSystem.Globalization.Native.a from the latest ILCompiler package).

I suspect this has been the case since #88793, which switched official builds but not PR builds over to the macOS 12 agents that come with XCode 14: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md#xcode.
PR builds still use macOS 11 which has XCode 13: https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md#xcode.

I can build with these changes locally using a newer XCode version.

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac? @jkotas@MichalStrehovsky

@jkotas

Copy link
Copy Markdown
Member

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac?

I do not see a problem with that.

@sbomer
sbomer merged commit a6d10a5 into dotnet:mainAug 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Aug 31, 2023
@sbomer
sbomer deleted the overrideILC branch November 3, 2023 18:36
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@sbomer@jkotas@am11@MichalStrehovsky@jkoritzinsky@LakshanF
, '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('^' + ".*" + ' Use latest ILC to AOT-compile ILC by sbomer · Pull Request #89655 · dotnet/runtime · GitHub
Skip to content

Use latest ILC to AOT-compile ILC - #89655

Merged
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC
Aug 1, 2023
Merged

Use latest ILC to AOT-compile ILC#89655
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC

Conversation

@sbomer

Copy link
Copy Markdown
Member

We need to build with a recent enough ILC that has the fix from #87785. This sets up a dependency on the runtime -> runtime package flow to build using the latest ILC package.

@LakshanFLakshanF 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.

Thanks! I validated that the NativeAOT ILC build with these changes (artifacts\bin\coreclr\windows.x64.Debug\ilc-published) does not cause problems.

Comment threadeng/Version.Details.xml Outdated

@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.

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

sbomerand others added 2 commits July 29, 2023 00:05
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
@sbomer

Copy link
Copy Markdown
MemberAuthor

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

@jkotas

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

We can give it a try. This setup may break when we need to push through a change that makes current native AOT incompatible with older SDK.

@am11

am11 commented Jul 29, 2023

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

@MichalStrehovsky

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

We scrapped the underlying tracking issue due to funding: #67742 (comment). It would be nicer to do it that way as it would avoid any versioning issue, but the LKG approach also has an advantage (we do all testing with the exact configuration that we're shipping).

@MichalStrehovskyMichalStrehovsky 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.

Thank you!

@sbomer

Copy link
Copy Markdown
MemberAuthor

The osx-arm64 build is hitting linker errors during AOT-compile of ILC:

Undefined symbols for architecture arm64:
"_objc_msgSend$AMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$PMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$UTF8String", referenced from:
_DetectDefaultAppleLocaleName in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleNameNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoIntNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleTimeFormatNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$characterAtIndex:", referenced from:

This appears to be because the official build osx machines use XCode 14, which enables an optimization for Objective-C selectors that requires the selector stubs to be generated at link time. The PR builds use XCode 13 which doesn't support this optimization, but we are trying to link with libraries that were produced from XCode 14 (libSystem.Globalization.Native.a from the latest ILCompiler package).

I suspect this has been the case since #88793, which switched official builds but not PR builds over to the macOS 12 agents that come with XCode 14: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md#xcode.
PR builds still use macOS 11 which has XCode 13: https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md#xcode.

I can build with these changes locally using a newer XCode version.

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac? @jkotas@MichalStrehovsky

@jkotas

Copy link
Copy Markdown
Member

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac?

I do not see a problem with that.

@sbomer
sbomer merged commit a6d10a5 into dotnet:mainAug 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Aug 31, 2023
@sbomer
sbomer deleted the overrideILC branch November 3, 2023 18:36
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@sbomer@jkotas@am11@MichalStrehovsky@jkoritzinsky@LakshanF
, '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('^' + ".*" + ' Use latest ILC to AOT-compile ILC by sbomer · Pull Request #89655 · dotnet/runtime · GitHub
Skip to content

Use latest ILC to AOT-compile ILC - #89655

Merged
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC
Aug 1, 2023
Merged

Use latest ILC to AOT-compile ILC#89655
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC

Conversation

@sbomer

Copy link
Copy Markdown
Member

We need to build with a recent enough ILC that has the fix from #87785. This sets up a dependency on the runtime -> runtime package flow to build using the latest ILC package.

@LakshanFLakshanF 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.

Thanks! I validated that the NativeAOT ILC build with these changes (artifacts\bin\coreclr\windows.x64.Debug\ilc-published) does not cause problems.

Comment threadeng/Version.Details.xml Outdated

@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.

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

sbomerand others added 2 commits July 29, 2023 00:05
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
@sbomer

Copy link
Copy Markdown
MemberAuthor

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

@jkotas

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

We can give it a try. This setup may break when we need to push through a change that makes current native AOT incompatible with older SDK.

@am11

am11 commented Jul 29, 2023

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

@MichalStrehovsky

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

We scrapped the underlying tracking issue due to funding: #67742 (comment). It would be nicer to do it that way as it would avoid any versioning issue, but the LKG approach also has an advantage (we do all testing with the exact configuration that we're shipping).

@MichalStrehovskyMichalStrehovsky 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.

Thank you!

@sbomer

Copy link
Copy Markdown
MemberAuthor

The osx-arm64 build is hitting linker errors during AOT-compile of ILC:

Undefined symbols for architecture arm64:
"_objc_msgSend$AMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$PMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$UTF8String", referenced from:
_DetectDefaultAppleLocaleName in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleNameNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoIntNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleTimeFormatNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$characterAtIndex:", referenced from:

This appears to be because the official build osx machines use XCode 14, which enables an optimization for Objective-C selectors that requires the selector stubs to be generated at link time. The PR builds use XCode 13 which doesn't support this optimization, but we are trying to link with libraries that were produced from XCode 14 (libSystem.Globalization.Native.a from the latest ILCompiler package).

I suspect this has been the case since #88793, which switched official builds but not PR builds over to the macOS 12 agents that come with XCode 14: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md#xcode.
PR builds still use macOS 11 which has XCode 13: https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md#xcode.

I can build with these changes locally using a newer XCode version.

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac? @jkotas@MichalStrehovsky

@jkotas

Copy link
Copy Markdown
Member

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac?

I do not see a problem with that.

@sbomer
sbomer merged commit a6d10a5 into dotnet:mainAug 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Aug 31, 2023
@sbomer
sbomer deleted the overrideILC branch November 3, 2023 18:36
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@sbomer@jkotas@am11@MichalStrehovsky@jkoritzinsky@LakshanF
, '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" + ' Use latest ILC to AOT-compile ILC by sbomer · Pull Request #89655 · dotnet/runtime · GitHub
Skip to content

Use latest ILC to AOT-compile ILC - #89655

Merged
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC
Aug 1, 2023
Merged

Use latest ILC to AOT-compile ILC#89655
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC

Conversation

@sbomer

Copy link
Copy Markdown
Member

We need to build with a recent enough ILC that has the fix from #87785. This sets up a dependency on the runtime -> runtime package flow to build using the latest ILC package.

@LakshanFLakshanF 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.

Thanks! I validated that the NativeAOT ILC build with these changes (artifacts\bin\coreclr\windows.x64.Debug\ilc-published) does not cause problems.

Comment threadeng/Version.Details.xml Outdated

@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.

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

sbomerand others added 2 commits July 29, 2023 00:05
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
@sbomer

Copy link
Copy Markdown
MemberAuthor

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

@jkotas

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

We can give it a try. This setup may break when we need to push through a change that makes current native AOT incompatible with older SDK.

@am11

am11 commented Jul 29, 2023

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

@MichalStrehovsky

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

We scrapped the underlying tracking issue due to funding: #67742 (comment). It would be nicer to do it that way as it would avoid any versioning issue, but the LKG approach also has an advantage (we do all testing with the exact configuration that we're shipping).

@MichalStrehovskyMichalStrehovsky 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.

Thank you!

@sbomer

Copy link
Copy Markdown
MemberAuthor

The osx-arm64 build is hitting linker errors during AOT-compile of ILC:

Undefined symbols for architecture arm64:
"_objc_msgSend$AMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$PMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$UTF8String", referenced from:
_DetectDefaultAppleLocaleName in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleNameNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoIntNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleTimeFormatNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$characterAtIndex:", referenced from:

This appears to be because the official build osx machines use XCode 14, which enables an optimization for Objective-C selectors that requires the selector stubs to be generated at link time. The PR builds use XCode 13 which doesn't support this optimization, but we are trying to link with libraries that were produced from XCode 14 (libSystem.Globalization.Native.a from the latest ILCompiler package).

I suspect this has been the case since #88793, which switched official builds but not PR builds over to the macOS 12 agents that come with XCode 14: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md#xcode.
PR builds still use macOS 11 which has XCode 13: https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md#xcode.

I can build with these changes locally using a newer XCode version.

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac? @jkotas@MichalStrehovsky

@jkotas

Copy link
Copy Markdown
Member

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac?

I do not see a problem with that.

@sbomer
sbomer merged commit a6d10a5 into dotnet:mainAug 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Aug 31, 2023
@sbomer
sbomer deleted the overrideILC branch November 3, 2023 18:36
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@sbomer@jkotas@am11@MichalStrehovsky@jkoritzinsky@LakshanF
, '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('^' + ".*" + ' Use latest ILC to AOT-compile ILC by sbomer · Pull Request #89655 · dotnet/runtime · GitHub
Skip to content

Use latest ILC to AOT-compile ILC - #89655

Merged
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC
Aug 1, 2023
Merged

Use latest ILC to AOT-compile ILC#89655
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC

Conversation

@sbomer

Copy link
Copy Markdown
Member

We need to build with a recent enough ILC that has the fix from #87785. This sets up a dependency on the runtime -> runtime package flow to build using the latest ILC package.

@LakshanFLakshanF 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.

Thanks! I validated that the NativeAOT ILC build with these changes (artifacts\bin\coreclr\windows.x64.Debug\ilc-published) does not cause problems.

Comment threadeng/Version.Details.xml Outdated

@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.

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

sbomerand others added 2 commits July 29, 2023 00:05
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
@sbomer

Copy link
Copy Markdown
MemberAuthor

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

@jkotas

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

We can give it a try. This setup may break when we need to push through a change that makes current native AOT incompatible with older SDK.

@am11

am11 commented Jul 29, 2023

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

@MichalStrehovsky

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

We scrapped the underlying tracking issue due to funding: #67742 (comment). It would be nicer to do it that way as it would avoid any versioning issue, but the LKG approach also has an advantage (we do all testing with the exact configuration that we're shipping).

@MichalStrehovskyMichalStrehovsky 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.

Thank you!

@sbomer

Copy link
Copy Markdown
MemberAuthor

The osx-arm64 build is hitting linker errors during AOT-compile of ILC:

Undefined symbols for architecture arm64:
"_objc_msgSend$AMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$PMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$UTF8String", referenced from:
_DetectDefaultAppleLocaleName in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleNameNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoIntNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleTimeFormatNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$characterAtIndex:", referenced from:

This appears to be because the official build osx machines use XCode 14, which enables an optimization for Objective-C selectors that requires the selector stubs to be generated at link time. The PR builds use XCode 13 which doesn't support this optimization, but we are trying to link with libraries that were produced from XCode 14 (libSystem.Globalization.Native.a from the latest ILCompiler package).

I suspect this has been the case since #88793, which switched official builds but not PR builds over to the macOS 12 agents that come with XCode 14: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md#xcode.
PR builds still use macOS 11 which has XCode 13: https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md#xcode.

I can build with these changes locally using a newer XCode version.

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac? @jkotas@MichalStrehovsky

@jkotas

Copy link
Copy Markdown
Member

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac?

I do not see a problem with that.

@sbomer
sbomer merged commit a6d10a5 into dotnet:mainAug 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Aug 31, 2023
@sbomer
sbomer deleted the overrideILC branch November 3, 2023 18:36
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@sbomer@jkotas@am11@MichalStrehovsky@jkoritzinsky@LakshanF
, '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('^' + ".*" + ' Use latest ILC to AOT-compile ILC by sbomer · Pull Request #89655 · dotnet/runtime · GitHub
Skip to content

Use latest ILC to AOT-compile ILC - #89655

Merged
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC
Aug 1, 2023
Merged

Use latest ILC to AOT-compile ILC#89655
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC

Conversation

@sbomer

Copy link
Copy Markdown
Member

We need to build with a recent enough ILC that has the fix from #87785. This sets up a dependency on the runtime -> runtime package flow to build using the latest ILC package.

@LakshanFLakshanF 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.

Thanks! I validated that the NativeAOT ILC build with these changes (artifacts\bin\coreclr\windows.x64.Debug\ilc-published) does not cause problems.

Comment threadeng/Version.Details.xml Outdated

@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.

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

sbomerand others added 2 commits July 29, 2023 00:05
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
@sbomer

Copy link
Copy Markdown
MemberAuthor

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

@jkotas

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

We can give it a try. This setup may break when we need to push through a change that makes current native AOT incompatible with older SDK.

@am11

am11 commented Jul 29, 2023

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

@MichalStrehovsky

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

We scrapped the underlying tracking issue due to funding: #67742 (comment). It would be nicer to do it that way as it would avoid any versioning issue, but the LKG approach also has an advantage (we do all testing with the exact configuration that we're shipping).

@MichalStrehovskyMichalStrehovsky 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.

Thank you!

@sbomer

Copy link
Copy Markdown
MemberAuthor

The osx-arm64 build is hitting linker errors during AOT-compile of ILC:

Undefined symbols for architecture arm64:
"_objc_msgSend$AMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$PMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$UTF8String", referenced from:
_DetectDefaultAppleLocaleName in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleNameNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoIntNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleTimeFormatNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$characterAtIndex:", referenced from:

This appears to be because the official build osx machines use XCode 14, which enables an optimization for Objective-C selectors that requires the selector stubs to be generated at link time. The PR builds use XCode 13 which doesn't support this optimization, but we are trying to link with libraries that were produced from XCode 14 (libSystem.Globalization.Native.a from the latest ILCompiler package).

I suspect this has been the case since #88793, which switched official builds but not PR builds over to the macOS 12 agents that come with XCode 14: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md#xcode.
PR builds still use macOS 11 which has XCode 13: https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md#xcode.

I can build with these changes locally using a newer XCode version.

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac? @jkotas@MichalStrehovsky

@jkotas

Copy link
Copy Markdown
Member

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac?

I do not see a problem with that.

@sbomer
sbomer merged commit a6d10a5 into dotnet:mainAug 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Aug 31, 2023
@sbomer
sbomer deleted the overrideILC branch November 3, 2023 18:36
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@sbomer@jkotas@am11@MichalStrehovsky@jkoritzinsky@LakshanF
, '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); } })(); })(); Use latest ILC to AOT-compile ILC by sbomer · Pull Request #89655 · dotnet/runtime · GitHub
Skip to content

Use latest ILC to AOT-compile ILC - #89655

Merged
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC
Aug 1, 2023
Merged

Use latest ILC to AOT-compile ILC#89655
sbomer merged 6 commits into
dotnet:mainfrom
sbomer:overrideILC

Conversation

@sbomer

Copy link
Copy Markdown
Member

We need to build with a recent enough ILC that has the fix from #87785. This sets up a dependency on the runtime -> runtime package flow to build using the latest ILC package.

@LakshanFLakshanF 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.

Thanks! I validated that the NativeAOT ILC build with these changes (artifacts\bin\coreclr\windows.x64.Debug\ilc-published) does not cause problems.

Comment threadeng/Version.Details.xml Outdated

@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.

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

sbomerand others added 2 commits July 29, 2023 00:05
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
@sbomer

Copy link
Copy Markdown
MemberAuthor

Is this a permanent change that is here to stay, or a temporary change that will be reverted after next SDK update?

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

@jkotas

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent, so that future ILCompiler fixes flow through the system quickly - do you have an opinion?

We can give it a try. This setup may break when we need to push through a change that makes current native AOT incompatible with older SDK.

@am11

am11 commented Jul 29, 2023

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

@MichalStrehovsky

Copy link
Copy Markdown
Member

I'm thinking we could make it permanent

Can we take a step further and bring it on the same plan as crossgen2? i.e. use "live build" of (unpublished) ilc to publish ilc for shipping nuget package. Then use the published bits in runtime and libraries testing as we do today with ilc (but not with crossgen2 yet due to issues on arm32 platform).

We scrapped the underlying tracking issue due to funding: #67742 (comment). It would be nicer to do it that way as it would avoid any versioning issue, but the LKG approach also has an advantage (we do all testing with the exact configuration that we're shipping).

@MichalStrehovskyMichalStrehovsky 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.

Thank you!

@sbomer

Copy link
Copy Markdown
MemberAuthor

The osx-arm64 build is hitting linker errors during AOT-compile of ILC:

Undefined symbols for architecture arm64:
"_objc_msgSend$AMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$PMSymbol", referenced from:
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$UTF8String", referenced from:
_DetectDefaultAppleLocaleName in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleNameNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoStringNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleInfoIntNative in libSystem.Globalization.Native.a(pal_locale.m.o)
_GlobalizationNative_GetLocaleTimeFormatNative in libSystem.Globalization.Native.a(pal_locale.m.o)
"_objc_msgSend$characterAtIndex:", referenced from:

This appears to be because the official build osx machines use XCode 14, which enables an optimization for Objective-C selectors that requires the selector stubs to be generated at link time. The PR builds use XCode 13 which doesn't support this optimization, but we are trying to link with libraries that were produced from XCode 14 (libSystem.Globalization.Native.a from the latest ILCompiler package).

I suspect this has been the case since #88793, which switched official builds but not PR builds over to the macOS 12 agents that come with XCode 14: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md#xcode.
PR builds still use macOS 11 which has XCode 13: https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md#xcode.

I can build with these changes locally using a newer XCode version.

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac? @jkotas@MichalStrehovsky

@jkotas

Copy link
Copy Markdown
Member

I would suggest moving PR builds to macOS 12 as well. Are we ok with requiring XCode 14 to build NativeAot apps on mac?

I do not see a problem with that.

@sbomer
sbomer merged commit a6d10a5 into dotnet:mainAug 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Aug 31, 2023
@sbomer
sbomer deleted the overrideILC branch November 3, 2023 18:36
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@sbomer@jkotas@am11@MichalStrehovsky@jkoritzinsky@LakshanF