New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove runtime dependency on libstdc++ #3564

Open
jkotas opened this Issue May 9, 2017 · 2 comments

Comments

Projects
None yet
2 participants
@jkotas
Member

jkotas commented May 9, 2017

CoreRT runtime does not use any C++ features (exception handling, etc.), but it still depends on libstdc++ here and there for no good reason. Consider cleaning these up and remote dependency on libstdc++ to improve minimal footprint.

@janvorli

This comment has been minimized.

Member

janvorli commented May 10, 2017

@jkotas CoreRT uses new / delete operators and these are implemented in the libstdc++. It also uses std::terminate. And the System.Globalization.Native uses std::string.

I have looked at the Exceptions simple test to find the symbols using objdump -x Exceptions | grep GLIBCXX | c++filt

@jkotas

This comment has been minimized.

Member

jkotas commented May 10, 2017

CoreRT uses new / delete operators and these are implemented in the libstdc++.

Yes, these are the kind of dependencies that I meant. E.g. we can have our own trivial local impl instead of pulling in the libstdc++ dependency.

System.Globalization.Native uses std::string

I am not worried about System.Globalization.Native as much. If you link with System.Globalization.Native, you are pulling in the large libicu dependency (order of magnitude more than libstdc++) and so the extra libc++ does not matter. I think this is really only interesting with the InvariantGlobalization-only config that does not have the libicu dependency: micro-service, running on vanilla Alpine, ... .

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