Giter Club home page Giter Club logo

Comments (8)

sylware avatar sylware commented on July 17, 2024 1

from steam-runtime.

sylware avatar sylware commented on July 17, 2024

c++ ABI is hell on earth. The reasonable thing to do is to statically link libstdc++ into the runtime (same thing would apply to libgcc) and let games statically link theirs.
More over, it's compiler/runtime specific. It's so hard to get right, there is near 0 "ok" c++ compiler/runtime for "production".
And look how hard and long it is to code an alternative (clang).
c++ is not something sane.

from steam-runtime.

nanonyme avatar nanonyme commented on July 17, 2024

Well, I'd also be happy if this libstdc++ was removed from Steam runtime but for some reason unknown to me Steam wants to ship it so I'm at requesting that at least a non-obsolete version is shipped.

from steam-runtime.

sylware avatar sylware commented on July 17, 2024

I think it's a good thing to keep libstdc++ in the runtime. But game devs should be directed to statically link their libstdc++ in their binaries (and libgcc too).
Since gcc 4.7 it's 2 gcc command line options, then super ultra easy to add.
Keeping that lib in the runtime is a kind of guardian against "you don't have the latest c++ ABI/feature on your gnu/linux system then your game won't run". The libc/GL/x11/alsa system libs are already too much and they rely on simple C entry points. Let me guess what will happen on the medium term with a libstdc++ which evolves super fast due to the current c++ standardisation body fenzy. With the insanity of the c++ ABI... it's unreasonnable. Moreover maybe clang c++ ABI will diverge from the gcc c++ ABI (or be just unable to be really compatible since it's hell on earth). BTW, no idea of intel c++ ABI direction.

IMHO, the right way:

  • keep the shared libstdc++ into the runtime
  • statically link steam client/runtime with libstdc++ (and libgcc)
  • direct games devs to statically link their games as much as they can
    But the end decision belongs to valve technical management staff.

from steam-runtime.

mbabuskov avatar mbabuskov commented on July 17, 2024

@sylware care to say which two command line options? Thanks.

from steam-runtime.

sylware avatar sylware commented on July 17, 2024

https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options
static-libgcc ... there is an application for c++ apps too, like static
libstdc++

On Sun, Oct 16, 2016 at 7:57 AM, mbabuskov [email protected] wrote:

@sylware https://github.com/sylware care to say which two command line
options? Thanks.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#31 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAOBJKjRCrQTGoJhzadZTeGcltr7lLhJks5q0hEQgaJpZM4DyQMz
.

from steam-runtime.

nanonyme avatar nanonyme commented on July 17, 2024

@sylware yes, I totally agree games should staticly link against libstdc++.
Please, Valve, make that an official recommendation if not a requirement to all future games. It will save tons of maintenance time.

from steam-runtime.

sylware avatar sylware commented on July 17, 2024

from steam-runtime.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.