Jump to page: 1 2
Thread overview
[Issue 14956] C++ Mangling incompatible with C++11
Oct 23, 2015
Iain Buclaw
Oct 23, 2015
Sobirari Muhomori
Oct 27, 2015
Marco Leise
Nov 07, 2015
Iain Buclaw
Nov 07, 2015
Iain Buclaw
Nov 07, 2015
Jacob Carlborg
Nov 07, 2015
Iain Buclaw
Oct 26, 2017
Walter Bright
Nov 01, 2017
Walter Bright
Nov 01, 2017
Walter Bright
Mar 01, 2022
Nicholas Wilson
October 23, 2015
https://issues.dlang.org/show_bug.cgi?id=14956

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ibuclaw@gdcproject.org

--- Comment #1 from Iain Buclaw <ibuclaw@gdcproject.org> ---
Ubuntu 15.10 has been released, and comes with gcc-5.2 as the default compiler.

So as more developers upgrade, the more likely they are to notice that D2 testsuite no longer passes (or whatever C++ interop they are using in their program starts failing).

--
October 23, 2015
https://issues.dlang.org/show_bug.cgi?id=14956

Sobirari Muhomori <dfj1esp02@sneakemail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |C++

--
October 27, 2015
https://issues.dlang.org/show_bug.cgi?id=14956

Marco Leise <Marco.Leise@gmx.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |Marco.Leise@gmx.de

--- Comment #2 from Marco Leise <Marco.Leise@gmx.de> ---
The mangling of the mangling changed? I thought that was a typo, but obviously you are right. They mangled and wrapped the mangling into a __cxx11 wrapper.

I assume the only way out of this is providing a -cxx11 flag for dmd? >.<

--
November 07, 2015
https://issues.dlang.org/show_bug.cgi?id=14956

--- Comment #3 from Iain Buclaw <ibuclaw@gdcproject.org> ---
(In reply to Marco Leise from comment #2)
> The mangling of the mangling changed? I thought that was a typo, but obviously you are right.

The C++-98 use of "Sb" and "Ss" is a special mangle string, and not actually representative of the actual name or namespace of basic_string.

Perhaps a better way of putting it would have been: "The abbreviations for mangling basic_string have been removed and replaced with a new namespace".

--
November 07, 2015
https://issues.dlang.org/show_bug.cgi?id=14956

--- Comment #4 from Iain Buclaw <ibuclaw@gdcproject.org> ---
(In reply to Marco Leise from comment #2)
> I assume the only way out of this is providing a -cxx11 flag for dmd? >.<

As we already support C++ namespaces, we can funnel what needs to be changed in the testsuite case itself.

---
extern (C++, std)
{
    version (C++-98)
    {
        struct basic_string(T, C = char_traits!T, A = allocator!T)
        {
        }
    }
    else version (C++-11)
    {
        extern (C++, __cxx11)
        {
            struct basic_string(T, C = char_traits!T, A = allocator!T)
            {
            }
        }
    }
}
---

Which leaves us with the question, how do figure out whether to use version condition branch A or B?

--
November 07, 2015
https://issues.dlang.org/show_bug.cgi?id=14956

Jacob Carlborg <doob@me.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |doob@me.com

--- Comment #5 from Jacob Carlborg <doob@me.com> ---
(In reply to Iain Buclaw from comment #4)

> Which leaves us with the question, how do figure out whether to use version condition branch A or B?

The user specifies the appropriate version flag. Or the compiler need a new flag for this.

--
November 07, 2015
https://issues.dlang.org/show_bug.cgi?id=14956

--- Comment #6 from Iain Buclaw <ibuclaw@gdcproject.org> ---
(In reply to Jacob Carlborg from comment #5)
> (In reply to Iain Buclaw from comment #4)
> 
> > Which leaves us with the question, how do figure out whether to use version condition branch A or B?
> 
> The user specifies the appropriate version flag. Or the compiler need a new flag for this.


Well, so far, apart from the testsuite, is there any other place this is necessary?  Probably not.  We don't maintain a core.stdcxx library, thank goodness.  And those who wish to use bindings to C++ std, then they can make the change in their code and provide some user defined version to select one or the other.

I've only found one bug that prevents this.  I've raised a PR for that.

https://github.com/D-Programming-Language/dmd/pull/5261

--
November 28, 2015
https://issues.dlang.org/show_bug.cgi?id=14956

--- Comment #7 from github-bugzilla@puremagic.com ---
Commit pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/574542fe2cf83dc32ce59fd82631184de91ef2a5 Merge pull request #5262 from ibuclaw/issue14956b

[14965]: Add versioned-out branch to support new C++-11 implementations of std::string

--
January 03, 2016
https://issues.dlang.org/show_bug.cgi?id=14956

--- Comment #8 from github-bugzilla@puremagic.com ---
Commit pushed to stable at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/574542fe2cf83dc32ce59fd82631184de91ef2a5 Merge pull request #5262 from ibuclaw/issue14956b

--
February 13, 2016
https://issues.dlang.org/show_bug.cgi?id=14956

--- Comment #9 from github-bugzilla@puremagic.com ---
Commit pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/f9b657b5fdca5658b4808fe444281fa4df23250a Merge pull request #5261 from ibuclaw/issue14956a

Parameter types should have namespace std mangling too

--
« First   ‹ Prev
1 2