All Versions
91
Latest Version
Avg Release Cycle
54 days
Latest Release
1472 days ago

Changelog History
Page 10

  • v0.1 Changes

    Obviously this is very exciting step for me. I am releasing Nuitka today. Finally. For a long time I knew I would, but actually doing it, is a ๐Ÿš€ different beast. Reaching my goals for release turned out to be less far away ๐Ÿš€ than I hope, so instead of end of August, I can already release it now.

    Currently it's not more than 4% faster than CPython. No surprise there, if all you did, is removing the bytecode interpretation so far. It's not impressive at all. It's not even a reason to use it. But it's also only a start. Clearly, โšก๏ธ once I get into optimizing the code generation of Nuitka, it will only get ๐Ÿ‘ better, and then probably in sometimes dramatic steps. But I see this as a long term goal.

    I want to have infrastructure in the code place, before doing lots of possible optimization that just make Nuitka unmaintainable. And I will want to have a look at what others did so far in the domain of type inference and how to apply that for my project.

    ๐Ÿ‘ I look forward to the reactions about getting this far. The supported language volume is amazing, and I have a set of nice tricks used. For example the way generator functions are done is a clever hack.

    Where to go from here? Well, I guess, I am going to judge it by the feedback I ๐Ÿ‘€ receive. I personally see "constant propagation" as a laudable first low hanging fruit, that could be solved.

    Consider this readable code on the module level:

    .. code-block:: python

    meters_per_nautical_mile = 1852
    
    def convertMetersToNauticalMiles(meters):
        return meters / meters_per_nautical_mile
    def convertNauticalMilesToMeters(miles):
        return miles * meters_per_nautical_mile
    

    Now imagine you are using this very frequently in code. Quickly you determine that the following will be much faster:

    .. code-block:: python

    def convertMetersToNauticalMiles(meters):
        return meters / 1852
    def convertNauticalMilesToMeters(miles):
        return miles * 1852
    

    Still good? Well, probably next step you are going to in-line the function calls entirely. For optimization, you are making your code less readable. I do not all appreciate that. My first goal is there to make the more ๐Ÿ‘ readable code perform as well or better as the less readable variant.