#14780: allow embedding python tuples in SR
-------------------------------------+-------------------------------------
       Reporter:  burcin             |        Owner:  burcin
           Type:  enhancement        |       Status:  needs_work
       Priority:  major              |    Milestone:  sage-6.2
      Component:  symbolics          |   Resolution:
       Keywords:  sd48               |    Merged in:
        Authors:  Burcin Erocal      |    Reviewers:  Volker Braun
Report Upstream:  N/A                |  Work issues:
         Branch:                     |       Commit:
  u/vbraun/python_tuples_in_SR       |  d6aa8ff7d1381db12a46e38cb9528127623ab346
   Dependencies:                     |     Stopgaps:
-------------------------------------+-------------------------------------

Comment (by vbraun):

 I'm playing around with marking the pynac templates external in the Sage
 library (C++11 feature, but unofficial in gcc for a while now). This is
 one way to avoid the clash. The problems seems that, on redhawk,
 `GiNaC::exprseq` a.k.a. `GiNaC::container<std::vector>` is not completely
 instantiated inside `libpynac.so`:
 {{{
 vbraun@redhawk:~/test/pynac/sage$ readelf -sW local/lib/libpynac.so  |
 grep _ZN5GiNaC9containerISt6vectorEC.Ev
   2014: 0000000000169620   162 FUNC    WEAK   DEFAULT   12
 _ZN5GiNaC9containerISt6vectorEC2Ev
   3594: 0000000000169620   162 FUNC    WEAK   DEFAULT   12
 _ZN5GiNaC9containerISt6vectorEC2Ev
 }}}
 vs. on my laptop:
 {{{
 $ readelf -sW local/lib/libpynac.so  | grep
 _ZN5GiNaC9containerISt6vectorEC.Ev
    468: 000000000017c46e   147 FUNC    WEAK   DEFAULT   11
 _ZN5GiNaC9containerISt6vectorEC2Ev
   7994: 000000000017c46e   147 FUNC    WEAK   DEFAULT   11
 _ZN5GiNaC9containerISt6vectorEC1Ev
   4012: 000000000017c46e   147 FUNC    WEAK   DEFAULT   11
 _ZN5GiNaC9containerISt6vectorEC2Ev
   5629: 000000000017c46e   147 FUNC    WEAK   DEFAULT   11
 _ZN5GiNaC9containerISt6vectorEC1Ev
 }}}
 If you know gcc name mangling by heart (and I don't blame you if you
 don't) then the `C1` is the full constructor while `C2` is only the base
 object constructor. If you use `c++filt` then that distinction is not
 shown (!).

 So after marking that template external in `ginac_wrap.h`, Sage still
 works on my lapop but fails on redhawk since the full constructor is never
 instantiated. I think we should just push explicit instantiation of all
 necessary templates into pynac, this will probably fix the bug here.

--
Ticket URL: <http://trac.sagemath.org/ticket/14780#comment:32>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to