Turn ForceLoad back on, now that the archive has no duplicates - #24
Merged
Conversation
Both settings were tried against a real link, and this is the one that works. Without it the linker keeps only the members something references, and every entry point here is reached from managed code rather than from native. The application built, weighed 30 MB and did not define cesium_async_system_create at all: the member carrying it had been dropped. A P/Invoke into it would have failed on a device, in somebody else's application, long after every build went green. With it, the link used to die on duplicate symbols, because the archive carried libjpeg.a beside libturbojpeg.a and libwebpdecoder.a beside libwebp.a. That is fixed where it belonged, in the merge in CesiumC, which no longer takes archives nothing links. The smoke leg is what turned this from an argument into a measurement. It reads the built executable and fails if cesium_async_system_create is not among its defined symbols, which is exactly how the dropped member was found.
Contributor
API gate: additiveEvery symbol that existed still exists, unchanged. Nothing that compiled before stops compiling.
Enum and constant values are part of the measured surface: a renumbering keeps compiling and sends the wrong number to the driver, so it counts as a removal. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Both settings were tried against a real link. This is the one that works.
Without it, the linker keeps only the members something references, and every entry point here is reached from managed code rather than from native. The application built, weighed 30 MB, and did not define
cesium_async_system_createat all — the member carrying it had been dropped. A P/Invoke into it would have failed on a device, in somebody else's application, long after every build went green.With it, the link used to die on duplicate symbols, because the archive carried
libjpeg.abesidelibturbojpeg.aandlibwebpdecoder.abesidelibwebp.a. That is now fixed where it belonged — in the merge in CesiumC#19, which no longer takes archives nothing links. The archive went from 61.0 MB across 143 archives to 59.9 MB across 141, and both iOS legs build there.The smoke leg is what made this a measurement rather than an argument
It reads the built executable and fails if
cesium_async_system_createis not among its defined symbols. That is exactly how the dropped member was found, and it is why flipping this back is a one-line change rather than a hope.Needs the CesiumC release to be re-cut first, which is in flight; the new archive is what makes ForceLoad safe.