<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://nuitka.net/</id>
  <title>Nuitka Blog - Posts by Batakrishna Sahu</title>
  <updated>2026-04-21T18:24:36.427335+00:00</updated>
  <link href="https://nuitka.net/"/>
  <link href="https://nuitka.net/blog/author/batakrishna-sahu/atom.xml" rel="self"/>
  <generator uri="https://ablog.readthedocs.io/" version="0.11.6">ABlog</generator>
  <entry>
    <id>https://nuitka.net/posts/bksahus-gsoc-wrap-up.html</id>
    <title>bksahu’s GSoC warp up</title>
    <updated>2019-08-25T19:55:00+01:00</updated>
    <author>
      <name>Batakrishna Sahu</name>
    </author>
    <content type="html">&lt;section id="bksahu-s-gsoc-warp-up"&gt;

&lt;p&gt;Hello everyone!&lt;/p&gt;
&lt;p&gt;GSoC 2019 has almost come to an end! It’s the time to wrap up this mega
event started back in May 2019. Under the mentorship of Mentor Hayen, my
learning experience has undergone a roller-coaster ride and it has not
only boosted my growth as a developer but also as an individual. Over
the last 3 months the following are my major contributions to this
project:&lt;/p&gt;
&lt;section id="built-ins-optimizations"&gt;
&lt;h2&gt;Built-ins Optimizations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;dl&gt;
&lt;dt&gt;“any”: &lt;a class="reference external" href="https://github.com/Nuitka/Nuitka/pull/246"&gt;PR #246&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;cite&gt;nuitka.nodes.BuiltinAnyNodes&lt;/cite&gt; node added to optimize the “any”
built-in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Developed an algorithm to predict the “any” for arguments
having repetitive values at compile time. For example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;p&gt;any([0]*255) -&amp;gt; False&lt;/p&gt;
&lt;p&gt;any([False, False, True]) -&amp;gt; True&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Extended support for &lt;cite&gt;range&lt;/cite&gt;, &lt;cite&gt;set&lt;/cite&gt; and &lt;cite&gt;dict&lt;/cite&gt; built-ins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added the optimized C side support too&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added a method &lt;cite&gt;getMetaClassBase&lt;/cite&gt; to make Python 2 and Python 3
compatible while working with metaclasses.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="simple"&gt;
&lt;dt&gt;Issue reported and closed &lt;a class="reference external" href="https://github.com/Nuitka/Nuitka/issues/349"&gt;Issue #349&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Created a new module &lt;cite&gt;nuitka.nodes.IterationHandles&lt;/cite&gt; to work
with iterables.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support of Iteration for non-mutable types.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl&gt;
&lt;dt&gt;“all”: &lt;a class="reference external" href="https://github.com/Nuitka/Nuitka/pull/407"&gt;PR #407&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Added &lt;cite&gt;nuitka.nodes.BuiltinAllNodes&lt;/cite&gt; to optimize the “all”
built-ins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Developed an algorithm similar to “any” to predict the “all”
arguments. For example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;p&gt;all([0, 0, 1]) -&amp;gt; False&lt;/p&gt;
&lt;p&gt;all([True]*100) -&amp;gt; True&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Other similar optimizations are done like “any” built-in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Additionally, added a new testing module
&lt;cite&gt;tests.optimizations.CommonOptimizations&lt;/cite&gt; to test the built-ins
optimizations at the same place.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="simple"&gt;
&lt;dt&gt;“abs”: &lt;a class="reference external" href="https://github.com/Nuitka/Nuitka/pull/419"&gt;PR #419&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Added new operation node &lt;cite&gt;ExpressionOperationAbs&lt;/cite&gt; to optimize
the &lt;cite&gt;abs&lt;/cite&gt; built-in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manually added &lt;cite&gt;shapeSlotAbs&lt;/cite&gt; to different shapes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally pre-computed the compile time constant &lt;cite&gt;abs&lt;/cite&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl&gt;
&lt;dt&gt;“max” and “min”: &lt;a class="reference external" href="https://github.com/Nuitka/Nuitka/pull/442"&gt;PR #442&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This PR is work in progress and is half complete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This is the first optimizations in which I used reformulations
instead of added in a new node.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pseudo-code of “min” reformulation:&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;_min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
 &lt;span class="n"&gt;tmp_arg1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
 &lt;span class="n"&gt;tmp_arg2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
 &lt;span class="n"&gt;tmp_arg3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
 &lt;span class="o"&gt;...&lt;/span&gt;
 &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tmp_arg1&lt;/span&gt;
 &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;keyfunc&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;# can be decided during re-formulation&lt;/span&gt;
     &lt;span class="n"&gt;tmp_key_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;keyfunc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="n"&gt;tmp_key_candidate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;keyfunc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp_arg2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;tmp_key_candidate&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;tmp_key_result&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
         &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tmp_arg2&lt;/span&gt;
         &lt;span class="n"&gt;tmp_key_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tmp_key_candidate&lt;/span&gt;
     &lt;span class="n"&gt;tmp_key_candidate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;keyfunc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp_arg3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;tmp_key_candidate&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;tmp_key_result&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
         &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tmp_arg3&lt;/span&gt;
         &lt;span class="n"&gt;tmp_key_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tmp_key_candidate&lt;/span&gt;
     &lt;span class="o"&gt;...&lt;/span&gt;
 &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
     &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;tmp_arg2&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
         &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tmp_arg2&lt;/span&gt;
     &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;tmp_arg3&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
         &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tmp_arg3&lt;/span&gt;
     &lt;span class="o"&gt;...&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adding support for &lt;cite&gt;keyfunc&lt;/cite&gt; is pending&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl&gt;
&lt;dt&gt;“zip”: &lt;a class="reference external" href="https://github.com/Nuitka/Nuitka/pull/462"&gt;PR #462&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;This built-in uses both types of optimizations that the
previous built-ins optimizations used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;cite&gt;zip&lt;/cite&gt; for Python 2 uses the reformulations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pseudo-code of “zip” reformulation:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;_zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="c1"&gt;# First assign, to preserve order of execution,&lt;/span&gt;
&lt;span class="c1"&gt;# the arguments might be complex expressions.&lt;/span&gt;
&lt;span class="n"&gt;tmp_arg1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
&lt;span class="n"&gt;tmp_arg2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
&lt;span class="n"&gt;tmp_arg3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="n"&gt;tmp_iter_1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;iter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp_arg1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;tmp_iter_2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;iter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp_arg2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;tmp_iter_3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;iter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp_arg3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="c1"&gt;# could be more&lt;/span&gt;
&lt;span class="n"&gt;tmp_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;tmp_result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="p"&gt;(&lt;/span&gt;
                 &lt;span class="nb"&gt;next&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp_iter_1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                 &lt;span class="nb"&gt;next&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp_iter_2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                 &lt;span class="nb"&gt;next&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp_iter_3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                 &lt;span class="o"&gt;...&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;
         &lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;StopIteration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
       &lt;span class="k"&gt;pass&lt;/span&gt;
 &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;tmp_result&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;cite&gt;zip&lt;/cite&gt; for Python 3 needs a new node that calls the &lt;cite&gt;zip&lt;/cite&gt;
because unlike &lt;cite&gt;zip&lt;/cite&gt; in Python 2, &lt;cite&gt;zip&lt;/cite&gt; in Python 3 returns a
&lt;cite&gt;zipobject&lt;/cite&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="test-suite"&gt;
&lt;h2&gt;Test suite&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;dl&gt;
&lt;dt&gt;Search mode “All”: &lt;a class="reference external" href="https://github.com/Nuitka/Nuitka/pull/378"&gt;PR #378&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;In the test suite, I added a new search mode “all” that will
test all the modules and return all the results at once. For
example:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;./tests/basics/run_all.py&lt;span class="w"&gt; &lt;/span&gt;all
&lt;span class="w"&gt;   &lt;/span&gt;Using&lt;span class="w"&gt; &lt;/span&gt;concrete&lt;span class="w"&gt; &lt;/span&gt;python&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.7.12&lt;span class="w"&gt; &lt;/span&gt;on&lt;span class="w"&gt; &lt;/span&gt;x86_64
&lt;span class="w"&gt;   &lt;/span&gt;Comparing&lt;span class="w"&gt; &lt;/span&gt;output&lt;span class="w"&gt; &lt;/span&gt;of&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Asserts.py&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;using&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/usr/bin/python&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;with&lt;span class="w"&gt; &lt;/span&gt;flags&lt;span class="w"&gt; &lt;/span&gt;silent,&lt;span class="w"&gt; &lt;/span&gt;expect_success,&lt;span class="w"&gt; &lt;/span&gt;remove_output,&lt;span class="w"&gt;     &lt;/span&gt;recurse_all,&lt;span class="w"&gt; &lt;/span&gt;original_file,&lt;span class="w"&gt; &lt;/span&gt;cpython_cache,&lt;span class="w"&gt; &lt;/span&gt;plugin_enable:pylint-warnings&lt;span class="w"&gt; &lt;/span&gt;...
&lt;span class="w"&gt;   &lt;/span&gt;.
&lt;span class="w"&gt;   &lt;/span&gt;.
&lt;span class="w"&gt;   &lt;/span&gt;.
&lt;span class="w"&gt;   &lt;/span&gt;.
&lt;span class="w"&gt;   &lt;/span&gt;Total&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;error&lt;span class="o"&gt;(&lt;/span&gt;s&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;found.
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl&gt;
&lt;dt&gt;Search mode “Only”: &lt;a class="reference external" href="https://github.com/Nuitka/Nuitka/pull/333"&gt;PR #333&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Added “only” search mode to test only a single module. For
example:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;./tests/basics/run_all.py&lt;span class="w"&gt; &lt;/span&gt;only&lt;span class="w"&gt; &lt;/span&gt;BuiltinsTest.py
&lt;span class="w"&gt;   &lt;/span&gt;Using&lt;span class="w"&gt; &lt;/span&gt;concrete&lt;span class="w"&gt; &lt;/span&gt;python&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.7.12&lt;span class="w"&gt; &lt;/span&gt;on&lt;span class="w"&gt; &lt;/span&gt;x86_64
&lt;span class="w"&gt;   &lt;/span&gt;Skipping&lt;span class="w"&gt; &lt;/span&gt;Asserts.py
&lt;span class="w"&gt;   &lt;/span&gt;Skipping&lt;span class="w"&gt; &lt;/span&gt;Assignments.py
&lt;span class="w"&gt;   &lt;/span&gt;Skipping&lt;span class="w"&gt; &lt;/span&gt;BigConstants.py
&lt;span class="w"&gt;   &lt;/span&gt;Skipping&lt;span class="w"&gt; &lt;/span&gt;Branching.py
&lt;span class="w"&gt;   &lt;/span&gt;Skipping&lt;span class="w"&gt; &lt;/span&gt;BuiltinOverload.py
&lt;span class="w"&gt;   &lt;/span&gt;Skipping&lt;span class="w"&gt; &lt;/span&gt;BuiltinSuper.py
&lt;span class="w"&gt;   &lt;/span&gt;Comparing&lt;span class="w"&gt; &lt;/span&gt;output&lt;span class="w"&gt; &lt;/span&gt;of&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;BuiltinsTest.py&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;using&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/usr/bin/python&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;with&lt;span class="w"&gt; &lt;/span&gt;flags&lt;span class="w"&gt; &lt;/span&gt;silent,&lt;span class="w"&gt; &lt;/span&gt;expect_success,&lt;span class="w"&gt; &lt;/span&gt;remove_output,&lt;span class="w"&gt; &lt;/span&gt;recurse_all,&lt;span class="w"&gt; &lt;/span&gt;original_file,&lt;span class="w"&gt; &lt;/span&gt;cpython_cache,&lt;span class="w"&gt; &lt;/span&gt;plugin_enable:pylint-warnings&lt;span class="w"&gt; &lt;/span&gt;...
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="simple"&gt;
&lt;dt&gt;Reported and closed Issue #334: &lt;a class="reference external" href="https://github.com/Nuitka/Nuitka/pull/336"&gt;PR #336&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Fixed the autoformat bug by reading and writing the files in
bytes instead of string.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="documentation"&gt;
&lt;h2&gt;Documentation&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Nuitka git work flow: &lt;a class="reference external" href="https://github.com/Nuitka/Nuitka/pull/485"&gt;PR #485&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And other minor doc fixes are added with their respective pull requests.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="what-i-learned"&gt;
&lt;h2&gt;What I learned&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Learned the software engineering principles and how to keep my work
clean.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I also learned how to effectively use software designing principles
like &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself"&gt;DRY&lt;/a&gt;
and &lt;a class="reference external" href="https://en.wikipedia.org/wiki/KISS_principle"&gt;KISS&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Got exposed to Nuitka internals which helped me to better understand
how compilers in general work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Explored how CPython works internally.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Got some great advice from Mentor Hayen about starting my
professional career in Software engineering.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, it was a great experience to be a part of Nuitka :)&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Yours,&lt;/div&gt;
&lt;div class="line"&gt;Batakrishna&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/bksahus-gsoc-wrap-up.html"/>
    <summary>Hello everyone!</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="gsoc2019" label="gsoc2019"/>
    <published>2019-08-25T19:55:00+01:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/batakrishna-sahu-intro.html</id>
    <title>Batakrishna Sahu</title>
    <updated>2019-05-14T08:31:00+01:00</updated>
    <author>
      <name>Batakrishna Sahu</name>
    </author>
    <content type="html">&lt;section id="batakrishna-sahu"&gt;

&lt;p&gt;Hello everyone!&lt;/p&gt;
&lt;p&gt;My name is Batakrishna Sahu and I am from India. I’m very grateful to be
one of the 2 selected students who will work with Nuitka during Google
Summer of Code 2019. My project is on &lt;a class="reference external" href="https://summerofcode.withgoogle.com/projects/#6183147857772544"&gt;“Optimizing Python 2 and Python 3
built-ins for Nuitka”&lt;/a&gt;
mentored by Vaibhav Tulsyan, Kamran Ghanaat, Kay Hayen.&lt;/p&gt;
&lt;p&gt;So far, ​there are a total of 69 built-ins in Python 3 and ​76 built-in
in Python 2 out of which 27 built-ins are yet to be optimized in
Nuitka​. My aim is to optimize those missing built-ins in Nuitka. This
will make Nuitka a lot faster while working with built-ins.&lt;/p&gt;
&lt;p&gt;I’m really excited to gain new experience while working on this project
this summer.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Yours,&lt;/div&gt;
&lt;div class="line"&gt;Batakrishna&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/batakrishna-sahu-intro.html"/>
    <summary>Hello everyone!</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="gsoc2019" label="gsoc2019"/>
    <category term="portrait" label="portrait"/>
    <published>2019-05-14T08:31:00+01:00</published>
  </entry>
</feed>
