On 9 April 2013 14:55, Nikita Nemkin <nik...@nemkin.ru> wrote:

> On Tue, 09 Apr 2013 19:33:20 +0600, mark florisson <
> markflorisso...@gmail.com> wrote:
>
>> On 9 April 2013 14:24, Stefan Behnel <stefan...@behnel.de> wrote:
>>
>>  mark florisson, 09.04.2013 15:13:
>>> > On 9 April 2013 14:11, Stefan Behnel wrote:
>>> >> Nathaniel Smith, 09.04.2013 15:00:
>>> >>> On 9 Apr 2013 13:50, "Stefan Behnel" wrote:
>>> >>>> There's also the problem of dependency hell and getting rid of old
>>> >>>> modules
>>> >>>> once they are no longer used on the user side. And also, how to get
>>> them
>>> >>>> there in the first place. Having one package overwrite the files of
>>> >>>> another during its installation is just asking for trouble.
>>> >>>
>>> >>> The system I described does not involve the addition of any new files
>>> to
>>> >>> any package.
>>> >>
>>> >> I take it then that you were envisaging a separate "cython-runtime"
>>> package
>>> >> on PyPI that Cython compiled modules would have to depend on?
>>> >>
>>> >> As long as people install their stuff using pip, that could work for
>>> them
>>> >> mostly ok, although with the regrettable Cython user impact of having
>>> to
>>> >> set that dependency for their packages in the first place.
>>> >>
>>> >> If people want to install stuff manually, dependency hell gets close.
>>> >>
>>> >> Or did you see any other ways of getting these things installed
>>> >> automatically, with a smaller user impact?
>>> >
>>> > For reference, here's a CEP about this written last year:
>>> > http://wiki.cython.org/**enhancements/libcython<http://wiki.cython.org/enhancements/libcython>
>>>
>>> Ok, but that CEP excludes the rather vital problem of distribution and
>>> installation. I also fail to see a reference to the problem of how
>>> multiple
>>> modules will interact that use different Cython runtime versions. That's
>>> a
>>> substantially bigger problem once symbols start becoming externally
>>> visible.
>>>
>>> Stefan
>>>
>>> ______________________________**_________________
>>> cython-devel mailing list
>>> cython-devel@python.org
>>> http://mail.python.org/**mailman/listinfo/cython-devel<http://mail.python.org/mailman/listinfo/cython-devel>
>>>
>>>
>> I didn't say it was complete :) But the way I see it is basically what
>> Nathaniel said, i.e. Cython modules dependent on the runtime import it at
>> import time. It simply imports 'cython.runtime<xxx>', which has been made
>> available by the first module to initialize the runtime (compiled with
>> --include-runtime), or otherwise must be present on the filesystem. So
>> user
>> packages can depend on a cython-runtime-x.y package (where each x.y is a
>> different package), so pip will install all the runtime versions users
>> need
>> (or maybe we can otherwise improve upon this scheme).
>>
>
> Extra dependency may not matter much for scientific code,
> but there are other users of Cython: library bindings, speedups
> for general purpose modules etc. Another (versioned!) binary dependency
> will become a liability to them.
>

Which is why it's optional: include the runtime separately, in a single
module, or in every module.


> If memoryviews rely on autogenerated (module-specific) code,
> how is common runtime supposed to help?
> The bulk of Cython utility code is also either inline or module-specific.
>

A fair amount is, though there is certainly room for externalizing (in the
form of a runtime library as well as a header file). And as mentioned, it'd
be useful to share Cython extension classes that cython inserts in each
module. And sure, a header file is really arguing over a few bytes on disk
and over the network. But it really does make it easier to inspect
generated C code.


> One alternative for code reuse in large Cython projects
> could be packaging multiple modules into one shared library.
>

We have 'include'! :) Seriously though, that wouldn't work well with the
import mechanism, and probably not for C compile time either.


>
> Best regards,
> Nikita Nemkin
>
> ______________________________**_________________
> cython-devel mailing list
> cython-devel@python.org
> http://mail.python.org/**mailman/listinfo/cython-devel<http://mail.python.org/mailman/listinfo/cython-devel>
>
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to