tag:blogger.com,1999:blog-79652213998932759482024-09-14T12:42:21.429+03:00Python Insider RUНовости в области разработки ядра PythonTatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-7965221399893275948.post-55925705386158678262013-01-11T12:14:00.002+04:002013-01-11T12:14:16.908+04:00PandaBoard и Raspberry Pi приписаны к флотилии Buildbot<b style="background-color: white; color: #111111; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; font-weight: normal; line-height: 17px; text-align: justify;"><span style="border: 0px; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">Благодаря </span><a href="http://python.org/psf/" style="border: 0px; color: #333344; cursor: pointer; margin: 0px; padding: 0px; text-decoration: initial; vertical-align: baseline;" target="_blank"><span style="border: 0px; color: #1155cc; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">Python Software Foundation</span></a><span style="border: 0px; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://pandaboard.org/" style="border: 0px; color: #333344; cursor: pointer; margin: 0px; padding: 0px; text-decoration: initial; vertical-align: baseline;" target="_blank"><span style="border: 0px; color: #1155cc; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">PandaBoard</span></a><span style="border: 0px; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"> прибыла на стол Трента Нельсона (Trent Nelson) как раз перед праздниками! Санта раздал сегодня утром подарки разработчикам Python и среди них оказался </span><a href="http://www.raspberrypi.org/" style="border: 0px; color: #333344; cursor: pointer; margin: 0px; padding: 0px; text-decoration: initial; vertical-align: baseline;" target="_blank"><span style="border: 0px; color: #1155cc; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">Raspberry Pi</span></a><span style="border: 0px; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">.</span></b><br /> <span style="background-color: white;"></span><br /> <div style="text-align: justify;"> <span style="background-color: white;"><span style="color: #111111; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 12.800000190734863px; line-height: 17px;"><br /> </span></span></div> <span style="background-color: white;"><span style="border: 0px; color: #111111; font-family: Arial; font-size: 15px; line-height: 17px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"><div style="text-align: justify;"> <span style="border: 0px; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline;">В недавнем обсуждении Рэймонда Хеттингера (Raymond Hettinger) по поводу распределения памяти в </span><a href="http://mail.python.org/pipermail/python-dev/2012-December/123028.html" style="border: 0px; color: #333344; cursor: pointer; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; margin: 0px; padding: 0px; text-decoration: initial; vertical-align: baseline;" target="_blank"><span style="border: 0px; color: #1155cc; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline;">словарях</span></a><span style="border: 0px; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline;">, Берри Варсоу (Barry Warsaw) и Кристиан Хеймес (Christian Heimes) поделились своими мыслями о том, как это может работать на ARM устройствах. Кристиан упомянул про </span><a href="http://www.snakebite.net/" style="border: 0px; color: #333344; cursor: pointer; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; margin: 0px; padding: 0px; text-decoration: initial; vertical-align: baseline;" target="_blank"><span style="border: 0px; color: #1155cc; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline;">Snakebite</span></a><span style="border: 0px; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline;">, запущенный Трентом Нельсоном, но без самих ARM устройств в этом окружении, и Трент предлогал разместить их, если бы кто-нибудь эти устройства пожертвовал.</span></div> </span><span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><div style="text-align: justify;"> <br /></div> </span><span style="border: 0px; color: #111111; font-family: Arial; font-size: 15px; line-height: 17px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"><div style="text-align: justify;"> <span style="border: 0px; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline;">На основании этого обсуждения и учитывая низкую стоимость этих устройств, PSF разрешила покупку PandaBoard ES, с 1.2 GHz ARM Cortex A9, и прочим необходимым оборудованием. Несколько Raspberry Pi (с </span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px;"><span style="border: 0px; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline;">700 MHz ARMv6) </span></span><span style="border: 0px; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline;">уже были в наличии у </span><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px;"><span style="border: 0px; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline;">PSF</span></span><span style="border: 0px; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline;">, так что одно из них так же было передано Тренту.</span></div> </span><span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><div style="text-align: justify;"> <br /></div> </span><span style="border: 0px; color: #111111; font-family: Arial; font-size: 15px; line-height: 17px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"><div style="text-align: justify;"> <span style="font-size: 15px;">Спасибо PSF за это приобретение и спасибо Тренту за настройку машин и добалвение их к своей среде!</span></div> </span></span><br /> <div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"> <b style="color: #111111; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-weight: normal; line-height: 17px;"><span style="border: 0px; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"><br /> </span></b></div> <div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"> <b style="color: #111111; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-weight: normal; line-height: 17px;"><span style="border: 0px; font-family: Arial; font-size: 15px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"><a href="http://blog.python.org/2012/12/pandaboard-raspberry-pi-coming-to.html?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+PythonInsider+%28Python+Insider%29" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration: initial; vertical-align: baseline;" target="_blank">Источник</a></span></b></div> Ishayahu Lastovhttp://www.blogger.com/profile/03850137965550355992noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-74740958030563302742011-10-01T13:27:00.001+04:002011-10-01T13:27:55.031+04:00Новый модуль faulthandler - хороший помощник при отладке в Python<div class="document" id="faulthandler-python"> <p>Источник: <a class="reference external" href="http://blog.python.org/2011/05/new-faulthandler-module-in-python-33.html">New faulthandler module in Python 3.3 helps debugging</a></p><p>Когда пользователь сообщает о том, что Ваша программа падает или зависает, иногда помочь ему можно лишь просьбой попробовать воспроизвести проблему ещё раз и собрать больше информации об возникшей ошибке. Даже в случае если пользователь вменяемый, разработчику зачастую невозможно воспроизвести проблему всвязи с различиями в среде выполнения программы, например из-за операционной системы или компилятора. При удачном стечении обстоятельств, у пользователя будет возможность установить утилиты для отладки, но всё же большая часть времени придётся дожидаться, пока другой человек не сможет получить больше информации о возникшей проблеме.</p><div class="section" id="id1"><h4>Фатальные ошибки</h4><p>Новый модуль <a class="reference external" href="http://docs.python.org/dev/library/faulthandler.html">faulthandler</a>, добавленный в Python 3.3, должен помочь в данной ситуации. <tt class="docutils literal">faulthandler</tt> предоставляет возможность дампа бэктрейса стека Python в случае фатальной проблемы наподобие ошибки сегментации, деления на 0, аварийного завершения или ошибки на шине. Включить данную функциональность в своём приложении можно вызовом <tt class="docutils literal">faulthandler.enable()</tt>, при этом указав опцию <tt class="docutils literal"><span class="pre">-X</span> faulthandler</tt> при запуске исполняемого файла Python. Ещё один вариант - это установить переменную окружения <a class="reference external" href="http://docs.python.org/dev/using/cmdline.html#envvar-PYTHONFAULTHANDLER">PYTHONFAULTHANDLER=1</a>. Пример вывода:</p><pre class="literal-block">Fatal Python error: Segmentation fault Current thread 0x00007f7babc6b700: File &quot;Lib/test/crashers/gc_inspection.py&quot;, line 29 in g File &quot;Lib/test/crashers/gc_inspection.py&quot;, line 32 in &lt;module&gt; Segmentation fault </pre></div><div class="section" id="id2"><h4>Таймаут</h4><p><tt class="docutils literal">faulthandler</tt> также позволяет дампить бэктрейс по истечению заданного таймаута. Для этого используется вызов <tt class="docutils literal">faulthandler.dump_tracebacks_later(timeout)</tt>. Эту же функцию нужно вызовать для того, чтобы перезапустить таймер. Для остановки таймера нужно вызвать функцию <tt class="docutils literal">faulthandler.cancel_dump_tracebacks_later()</tt>. Пример вывода:</p><pre class="literal-block">Timeout (0:01:00)! Current thread 0x00007f987d459700: File &quot;Lib/test/crashers/infinite_loop_re.py&quot;, line 20 in &lt;module&gt; </pre><p>Опция <tt class="docutils literal">repeat=True</tt> используется для дампа бэктрейса каждые <tt class="docutils literal">timeout</tt> секунд, а опция <tt class="docutils literal">exit=True</tt> применяется для немедленного завершения программы небезопасным способом, т.е. без сброса файловых буферов на диск.</p></div><div class="section" id="id3"><h4>Пользовательский сигнал</h4><p>Если есть доступ на машину, где работает программа, можно использовать механизм <tt class="docutils literal">faulthandler.register(signal)</tt> для установки обработчика сигналов, по которому бдует осуществляться дамп бэктрейса при получении заданного <tt class="docutils literal">сигнала</tt>. В UNIX, например, можно использовать сигнал <tt class="docutils literal">SIGUSR1</tt>: по команде <tt class="docutils literal">kill <span class="pre">-USR1</span> &lt;pid&gt;</tt> будет получен текущий бэктрейс. Эта возможность недоступна на Windows-системах. Пример вывода:</p><pre class="literal-block">Current thread 0x00007fdc3da74700: File &quot;Lib/test/crashers/infinite_loop_re.py&quot;, line 19 in &lt;module&gt; </pre><p>Другая возможность - это явный вызов <tt class="docutils literal">faulthandler.dump_traceback()</tt> в коде программы.</p></div><div class="section" id="id4"><h4>Вопросы безопасности и выходной файл</h4><p><tt class="docutils literal">faulthandler</tt> отключён по умолчанию по соображениям безопасности, в основном потому, что он сохраняет файловый дескриптор объекта <tt class="docutils literal">sys.stderr</tt> и пишет бэктрейсы в этот файловый дескриптор. Если <tt class="docutils literal">sys.stderr</tt> закрыт, а дескриптор файла повторно используется, то он может быть сокетом, каналом, критическим файлом или ещё чем-нибудь другим. По умолчанию <tt class="docutils literal">faulthandler</tt> пишет бэктрейсы в <tt class="docutils literal">sys.stderr</tt>, но есть возможность указать другой файл. Более подробную информацию об этом можно получить в <a class="reference external" href="http://docs.python.org/dev/library/faulthandler.html#file-descriptor-issue">документации по faulthandler</a>.</p></div><div class="section" id="python"><h4>Стороний модуль для старых версий Python</h4><p><tt class="docutils literal">faulthandler</tt> также поддерживается как независимый модуль для Python 2.5-3.2 <cite>на PyPI</cite>. Главное отличие между модулем в Python 3.3 и сторониим модулем - это реализация <tt class="docutils literal">dump_tracebacks_later()</tt>: Python 3.3 использует поток и блокироку с таймаутом, тогда как независимый модуль использует <tt class="docutils literal">SIGALRM</tt> и <tt class="docutils literal">alarm()</tt>.</p><p>Таймаут блокировки - это новоя возможность в Python 3.3. Он имеет микросекундную точность. <tt class="docutils literal">alarm()</tt> таймер, который используется в старых версиях, обладает точностью в одну секунду, а сигнал <tt class="docutils literal">SIGALRM</tt> может прервать текущий системный вызов, при этом системный вызов завершится с ошибкой <tt class="docutils literal">EINTR</tt>.</p></div><div class="section" id="id5"><h4>Ранний успех</h4><p>Новый модуль <tt class="docutils literal">faulthandler</tt> уже помог поймать состояние гонки в нашей системе сборке - buildbot. Есть надежда, что он будет полезен также и другим программистам.</p></div></div>Alexei Romanoffhttp://www.blogger.com/profile/09100014728062013042noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-65639037119908492942011-10-01T13:27:00.000+04:002011-10-01T13:27:06.721+04:00Менторская программа для ядра Python<div class="document" id="python"> <p>Источник: <a class="reference external" href="http://blog.python.org/2011/05/python-core-mentorship-program.html">The Python Core Mentorship Program</a></p><p><cite>Джесси Ноллер</cite> недавно <a class="reference external" href="http://jessenoller.com/2011/04/05/python-core-mentorship-up-and-running/">аннонсировал</a> создание менторской программы для ядра Python. Основополагающая идея программы заключается в содействии программистам, студентам и участниками других проектов. Помощь заключается во взаимодействии с опытными контрибьютерами, которые становятся менторами, чтобы облегчить новичкам процесс вхождения в разработку ядра Python.</p><div class="section" id="id1"><h4>Разыскиваются контрибьютеры</h4><p>Менторы будут помогать людям независимо от их уровня опыта быть &quot;в теме&quot;, отвечая на вопросы, а также давать указания при необходимости в бесконфликтной и приветливой форме. Контрибьютеры будут получать наставления на каждом этапе процесса с их участием, включая дискуссии в связанных списках рассылки, систему отслеживания ошибок, систему контроля версий - Mercurial, обзоры кода и многое другое.</p></div><div class="section" id="id2"><h4>Ранний успех</h4><p>Программа уже принесла свои плоды и её участники закоммитили некоторое количество патчей. Также было несколько конструктивных дискуссий в списке рассылки, помогающих вести народ в правильном направлении при возникновении различных проблем.</p></div><div class="section" id="id3"><h4>Кодекс поведения</h4><p>У программы имеется кодекс поведения, который изложен на сайте проекта, предназначенном для смягчения отношений при взаимодействии множества новых контрибьютеров с опытными разработчиками. Также этот кодекс касается списков почтовой рассылки, посвящённых контрибьюции. Джесси и другие менторы надеятся, что эта программа может быть полезна как эталон для других проектов в долгосрочной перспективе, и от её развития будет прок не только ядру Python. Также одной из целей программы является увеличение общей разнородности контрибьютеров Python.</p></div><div class="section" id="id4"><h4>Как принять участие?</h4><p>Программа запущена через <a class="reference external" href="http://mail.python.org/mailman/listinfo/core-mentorship">список рассылки</a>, также существует лаконичный и понятный <a class="reference external" href="http://pythonmentors.com/">сайт</a>, посвящённый ей. Если читатель хотел бы присоединиться и вступить на путь разработчика ядра Python, то этот проект - великолепная возможность задать вопросы и сделать свои первые шаги в этом направлении. Проект будет полезным и для опытных разработчкиков(уже даже вовлечённых в разработку Python), которые хотели бы задать какие-либо вопросы, но считают их неуместными в других списках рассылки.</p></div></div>Alexei Romanoffhttp://www.blogger.com/profile/09100014728062013042noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-645926254444632192011-08-17T10:56:00.000+04:002011-08-17T10:56:28.634+04:00Перевод блога на португальский, немецкий, корейский и традиционный китайский языки<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="document" id="id1"> Источник: <a class="reference external" href="http://blog.python.org/2011/05/portuguese-german-korean-and.html">Portuguese, German, Korean, and Traditional Chinese Translations</a><br /> <br /> <a class="reference external" href="http://blog.python.org/2011/05/python-insider-translation-project.html">Проект перевода блога</a> Python Insider продолжает развиваться! Мы запускаем <a class="reference external" href="http://blog-pt.python.org/">португальский</a>, <a class="reference external" href="http://blog-de.python.org/">немецкий</a>, <a class="reference external" href="http://blog-ko.python.org/">корейский</a> и <a class="reference external" href="http://blog-tw.python.org/">традиционный китайский</a> версии блога. Переводчики уже начали публиковать накопившиеся статьи. Что касается других переводов, они ведутся параллельно с оригинальным блогом <a class="reference external" href="http://blog.python.org/">Python Insider</a>, но могут незначительно отставать от него.</div> </div> Tatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-9453301097140049262011-08-17T10:55:00.000+04:002011-08-17T10:55:47.036+04:00Перевод блога на румынский и упрощенный китайский языки<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="document" id="id1"> Источник: <a class="reference external" href="http://blog.python.org/2011/05/romanian-and-simplified-chinese.html">Romanian and Simplified Chinese Translations</a><br /> <br /> Команда Python Insider рада сообщить о запуске блога на двух новых языках. Переводчики на <a class="reference external" href="http://blog-ro.python.org/">румынский</a> и <a class="reference external" href="http://blog-cn.python.org/">упрощенный китайский</a> языки присоединились к <a class="reference external" href="http://blog.python.org/2011/05/python-insider-translation-project.html">проекту перевода нашего блога</a> и уже начали публиковать накопившиеся статьи. Что касается других переводов, они ведутся параллельно с оригинальным блогом <a class="reference external" href="http://blog.python.org/">Python Insider</a>, но могут незначительно отставать от него.</div> </div> Tatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-33822505034901950282011-07-27T00:32:00.001+04:002011-07-27T00:50:32.342+04:00Jython мигрирует на Mercurial<div class="document" id="jython-mercurial"> <p>Источник: <a class="reference external" href="http://blog.python.org/2011/05/jython-migrates-to-mercurial.html">Jython Migrates to Mercurial</a></p> <p>Jython окончательно мигрировал с Subversion на Mercurial. Этого пришлось дожидаться довольно долго: к сожалению, репозиторий на Subversion был сложным, и пришлось приложить некоторые усилия для аккуратного перехода на другую систему контроля версий.</p> <p>Новый официальный репозиторий Jython сейчас хостится на &#64;</p> <p><a class="reference external" href="http://hg.python.org/jython">http://hg.python.org/jython</a></p> <p>с <a class="reference external" href="http://bitbucket.org/jython/jython">зеркалом на BitBucket</a> для облегчения форка.</p> <p>Также существует больший репозиторий, доступный только для чтения, c текущими ветками для разработки новой функциональности (преобразованный в Mercurial Bookmarks). Его можно найти по ссылке <a class="reference external" href="http://hg.python.org/jython-fullhistory">http://hg.python.org/jython-fullhistory</a>.</p> <p>С помощью Mercurial помогать проекту Jython стало даже легче, делаешь форк и вперёд, помогать создавать Jython 2.6!</p> </div>Alexei Romanoffhttp://www.blogger.com/profile/09100014728062013042noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-90257174530528319072011-07-25T13:06:00.000+04:002011-07-25T13:06:42.767+04:00С Python 3.3 заканчивается поддержка OS/2, Windows 2000 и VMS<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="document" id="python-3-3-os-2-windows-2000-vms"> Источник: <a class="reference external" href="http://blog.python.org/2011/05/python-33-to-drop-support-for-os2.html">Python 3.3 to Drop Support for OS/2, Windows 2000, and VMS</a><br /> <br /> Время от времени наступает момент, когда требуется сократить список поддерживаемых операционных систем и привести его в соответствие с потребностями пользователей. Важную роль в данном вопросе играют разработчики, поддерживающие платформу, потому что именно они решают задачи, необходимые для выпуска качественного релиза. Такие факторы, как возраст операционной системы и наличие препятствий для дальнейших разработок под нее, также влияют на решение о прекращении ее поддержки.<br /> <br /> <a class="reference external" href="http://www.haypocalc.com/wiki/Victor_Stinner">Виктор Стиннэ</a> не так давно предложил <a class="reference external" href="http://mail.python.org/pipermail/python-dev/2011-April/110872.html">прекратить поддержку OS/2 и VMS</a> в CPython, через год после его <a class="reference external" href="http://mail.python.org/pipermail/python-dev/2010-April/099471.html">первоначального вопроса</a> касательно поддержки OS/2. Данный вопрос возник у Виктора в то время, когда он работал над поддержкой стандарта Unicode. В основном, проблемы были с <a class="reference external" href="http://docs.python.org/library/os#os.execvpe">os.execvpe()</a> в части поддержки переменных окружения с помощью обработчика surrogateescape, описанного в <a class="reference external" href="http://www.python.org/dev/peps/pep-0383/">PEP 383</a>. В данный момент нет команды разработчиков под OS/2 и VMS, поэтому в процессе подготовки релиза не проводится тестирование для этих систем.<br /> <br /> Написание данной статьи <a class="reference external" href="http://mail.python.org/pipermail/python-dev/2011-May/111159.html">заставило меня задуматься</a> о <a class="reference external" href="http://mail.python.org/pipermail/python-dev/2010-March/098074.html">предыдущей дискуссии</a> о завершении поддержки Windows 2000, которая, кажется, была заброшена. Тогда же было предложено пустить под нож системы, у которых переменная окружения <tt class="docutils literal">COMSPEC</tt> указывала на <tt class="docutils literal">command.com</tt>. <a class="reference external" href="http://hg.python.org/peps/rev/b9390aa12855">Теперь</a> все эти системы присоединились к более неподдерживаемым OS/2 и VMS. Windows 2000 находится в процессе удаления из списка поддерживаемых систем, что упростит разработку, поскольку пропадает необходимость брать в расчет устаревшие интерфейсы операционных систем, поддержку которых решено было прекратить в 2010 году.<br /> <br /> Чтобы запустить процесс завершения поддержки этих систем, мы с Виктором начали с обновления <a class="reference external" href="http://www.python.org/dev/peps/pep-0011/">PEP 11</a>.<br /> <br /> <div class="section" id="pep-11"> <h4> PEP 11</h4> <h4> &nbsp;</h4> Этот PEP содержит список операционных систем, которые больше не поддерживаются, а также поясняет процедуру добавления системы в этот список.<br /> <br /> Как только решено, что для данной операционной системы можно начинать процедуру удаления, она официально объявляется неподдерживаемой. Традиционно такое уведомление включается в ту версию, которая в данный момент находится в разработке. Поэтому поддержка OS/2, Windows 2000 и VMS прекращается в Python версии 3.3.<br /> <br /> Первый этап не требует практически никаких усилий, и заключается, в основном, в "поднятии белого флага". Это знак отсутствия кого-либо, кто бы поддерживал код и обеспечивал качественный релиз. Также могут быть сделаны изменения в процессах компиляции и установки для предупреждения пользователей таких платформ о прекращении поддержки. Уведомление будет размещено в документе "<a class="reference external" href="http://docs.python.org/dev/whatsnew/3.3.html#unsupported-operating-systems">What's New</a>", в котором перечислены платформы, поддержка которых прекращается.<br /> <br /> После завершения цикла релиза, в котором объявляется об окончании поддержки, в последующей версии можно начать удалять код. В данном случае код может быть удален в версии 3.4. Вероятно, массового удаления такого кода не будет, но разработчики, которые наткнуться на него в процессе своей текущей работы, могут удалять блоки <tt class="docutils literal">#ifdef</tt>, секции в <tt class="docutils literal">configure</tt> или устаревший код.<br /> <br /> </div> <div class="section" id="id1"> <h4> Что же Вам делать</h4> <h4> &nbsp;</h4> Если Вы являетесь разработчиком под OS/2 или VMS, у Вас есть несколько способов сохранить поддержку для своей платформы. <br /> <div class="section" id="id2"> <h5> Стать мейнтейнером </h5> Лучшей поддержкой платформы является активный разработчик. Эндрю МакИнтайр был мейнтейнером OS/2 в течение некоторого времени, и когда Виктор первый раз поднял вопрос про OS/2, Эндрю сообщил, что версия для OS/2 отстает в части поддержки Unicode, а это, безусловно, область, требующая внимания. У VMS есть некоторая внешняя поддержка усилиями разработчиков из <a class="reference external" href="http://www.vmspython.org/">http://www.vmspython.org</a>, но, как уже обсуждалось в <a class="reference external" href="http://bugs.python.org/issue11918">issue 11918</a>, кто-то должен выступить в роли мейнтейнера.<br /> <br /> Если вы заинтересованы участвовать в поддержке той или иной платформы, прочитайте <a class="reference external" href="http://docs.python.org/devguide">developer's guide</a> для получения информации о текущих процессах разработки.<br /> </div> <div class="section" id="id3"> <h5> Подарить компьютер для сборки релизов </h5> С активным разработчиком у платформы есть больший шанс выжить. При наличии компьютера для сборки релиза у платформы есть шанс не только выжить, но еще и повысить качество поддержки.<br /> <br /> Python использует <a class="reference external" href="http://trac.buildbot.net/">Buildbot</a> для непрерывной интеграции, компьютеры для сборки релиза <a class="reference external" href="http://www.python.org/dev/buildbot/">в данный момент доступны</a> для Linux, Mac, Windows и Open Indiana (Solaris), для разных версий, архитектур и конфигураций. Пожертвование машины в парк компьютеров для сборки под OS/2 и VMS позволит релизам для этих ОС получить столько же внимания, сколько уделяется более распространенным платформам.<br /> <br /> Если Вы можете пожертвовать своим временем или оборудованием, чтобы помочь сохранить поддержку для OS/2 и VMS, сообщите об этом в список рассылки <a class="reference external" href="http://mail.python.org/mailman/listinfo/python-dev">python-dev</a>.</div> </div> </div> </div>Tatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-61901301178331398862011-07-25T12:40:00.000+04:002011-07-25T12:40:04.717+04:00Проект перевода блога Python Insider<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="document" id="python-insider"> Источник: <a class="reference external" href="http://blog.python.org/2011/05/python-insider-translation-project.html">Python Insider Translation Project</a><br /> <br /> Мы считаем, что содержимое данного блога полезно для всего сообщества Python, поэтому одна из наших приоритетных задач - донести эту информацию до максимально большого числа людей. С целью расширения аудитории читателей мы собрали команду переводчиков, которые параллельно ведут этот блог на разных языках. Сегодня мы запускаем перевод еще на двух языках: <a class="reference external" href="http://blog-ja.python.org/">японском</a> и <a class="reference external" href="http://blog-es.python.org/">испанском</a>.<br /> <br /> Переводы будут немного отставать от публикаций оригинального блога <a class="reference external" href="http://blog.python.org/">Python Insider</a>, но переводчики будут стараться, чтобы блоги были более или менее актуальными.<br /> <div class="section" id="id1"> <h4> &nbsp;</h4> <h4> Требуется помощь</h4> <h4> &nbsp;</h4> Команда переводчиков пока что невелика, поэтому мы ищем желающих присоединиться. Нам нужны люди, которые могли бы работать с уже переводимыми блогами или помочь в переводе блога на другие языки. Если Вы можете нам в этом помочь, обращайтесь к Doug Hellmann (doug dot hellmann at gmail).</div> </div> </div>Tatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-74403979626483821882011-07-14T22:56:00.000+04:002011-07-14T22:56:54.986+04:00Знакомьтесь с командой: Брайан Кёртин<div class="document" id="id1"> <i>Этот пост является частью цикла "Знакомьтесь с командой", который создан, чтобы представить и поближе узнать членов команды разработки ядра Python.</i><br /> <br /> Источник: <a class="reference external" href="http://blog.python.org/2011/04/meet-team-brian-curtin.html">Meet the Team: Brian Curtin</a><br /> <br /> <table class="docutils field-list" frame="void" rules="none"> <tbody valign="top"> <tr class="field"><td class="field-name"><b>Имя:</b></td><td class="field-body">Брайан Кёртин</td> </tr> <tr class="field"><td class="field-name"><b>Местонахождение:</b></td><td class="field-body">Чикаго, Иллинойс</td> </tr> <tr class="field"><td class="field-name"><b>Домашняя страница:</b></td><td class="field-body"><a class="reference external" href="http://blog.briancurtin.com/">http://blog.briancurtin.com/</a><br /> </td> </tr> </tbody> </table> <br /> <b>Как долго Вы программируете на Python?</b><br /> <br /> На ежедневной основе - 6 лет. До этого я время от времени использовал Python на уроках в колледже, а также на летней практике.<br /> <br /> <b>Как долго Вы являетесь разработчиком ядра?</b><br /> <br /> Чуть больше года. 24 марта ознаменовало мой первый год в команде.<br /> <br /> <b>Как вы стали разработчиком ядра? Помните ли свой первый коммит?</b><br /> <br /> Началось все с того, что я заметил ошибку в документации, когда писал модуль расширения на работе. Затем я прислал незамысловатый патч и Георг Брандл практически сразу поместил его в репозиторий. После такого быстрого успеха, получив из репозитория свежий исходный код, я захотел в него углубиться и узнать побольше о модулях, которые я использовал. В итоге, я написал патч для поддержки протокола context manager в модуле zipfile.<br /> <br /> Мои первые несколько коммитов касались исправлений в документации с целью ее упрощения. Первый код, который я закоммитил, добавлял несколько новых возможностей и расширял покрытие тестами модуля winreg.<br /> <br /> <b>Над какими частями Python Вы сейчас работаете?</b><br /> <br /> Поскольку я один из немногих в команде разработки CPython, кто программирует под Windows, я стараюсь следить за проблемами, возникающими у разработчиков под Windows. В связи с этим у меня была возможность поработать над группой модулей стандартной библиотеки, включая и те, которые я раньше не использовал. Непосредственно интерпретатором я практически не занимался, но я надеюсь изменить эту ситуацию.<br /> <br /> <b>Как Вы еще используете Python, помимо работы по разработке ядра?</b><br /> <br /> Я создаю различные инструменты для тестирования трейдинговой базы данных, которая написана на C++. Для работы с ее данными существует модуль расширения, что позволяет нам легко создавать регрессионные тесты, тесты производительности. Мы стараемся создать больше разных тестов.<br /> <br /> <b>Чем вы занимаетесь, когда не программируете?</b><br /> <br /> Я большой фанат бейсбола. Я сужу бейсбол в колледже весной и в различных лигах летом, а также смотрю или хожу на игры команды Chicago Cubs.</div>Tatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-48421465636292662602011-07-08T15:27:00.003+04:002011-07-08T15:46:29.723+04:00Знакомьтесь с командой: Ник Коглэн<div class="document" id="id1"> <p><em>Этот пост является частью цикла "Знакомьтесь с командой", который создан, чтобы представить и поближе узнать членов команды разработки ядра Python.</em></p> <p>Источник: <a class="reference external" href="http://blog.python.org/2011/04/meet-team-nick-coghlan.html">Meet the Team: Nick Coghlan</a></p> <table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></colgroup><colgroup><col class="field-body"></colgroup><tbody valign="top"><tr class="field"><th style="text-align: left;" class="field-name">Имя:</th><td class="field-body">Ник Коглэн</td></tr><tr class="field"><th style="text-align: left;" class="field-name">Местонахождение:</th><td class="field-body">Брисбен, Австралия</td></tr><tr class="field"><th class="field-name">Домашняя страница:</th><td class="field-body"><a class="reference external" href="http://www.boredomandlaziness.org/">http://www.boredomandlaziness.org</a></td></tr></tbody></table> <p><strong>Как долго Вы программируете на Python?</strong></p> <p>Впервые повстречал версию Python 1.5.2 примерно в 1999 году, когда наш лектор использовал его для курса компьютерных сетей. Начал использовать версию 2.2 профессионально для автоматизированного тестирования приблизительно в 2002 году и никогда не оглядывался на прошлое.</p> <p><strong>Как долго Вы являетесь разработчиком ядра?</strong></p> <p>Гвидо дал мне доступ в 2005 году для обновления PEP 343(главным образом изменения, связанные с методом __context__).</p> <p><strong>Как вы стали разработчиком ядра? Помните ли свой первый коммит?</strong></p> <p>В процессе помощи проекту патчами у меня был трёхмесячный отпуск в 2004 году, и я провёл большую его часть, работая с Реймондом и Факундо над модулем decimal, большей частью запуская тесты telco, пытаясь повысить производительность кода. Некоторые посторонние хаки в модуле decimal(например, быстрый способ проверки специальных случаев и использование строк для преобразования кортежей цифр в целые числа) обитают там с того времени.</p> <p>Мою настоящую первую заливку я сделал, наверное, в PEP 343, а затем после этого, вероятно, в ветку AST-компилятора, как только мы завершили его для включения в версию 2.5.</p> <p><strong>Над какими частями Python Вы сейчас работаете?</strong></p> <p>runpy, functools и contextlib являются главными вещами, которые имеют обыкновение попадать в мой почтовый ящик. Также я слежу за тем, чем занимаются Брет и Виктор касательно импорта, что делает Реймонд с модулями collections и itertools, а ещё мне интересно всё, что происходит с компилятором. Ещё меня привлекает культурная часть всех этих вещей.</p> <p><strong>Как Вы еще используете Python, помимо работы по разработке ядра?</strong></p> <p>Не так и много, в действительности. Программы на Python на работе просто выполняют свои функции как часы, таким образом, нет особой необходимости дорабатывать их прямо сейчас. Я хотел бы сделать что-нибудь для упорядочивания моей цифровой музыкальной библиотеки, так как имеющиеся для этого сейчас скрипты - это просто набор костылей.</p> <p><strong>Чем вы занимаетесь, когда не программируете?</strong></p> <p>Тхэквондо, компьютерные игры, футбол, чтение и многое, многое другое...</p> </div>Alexei Romanoffhttp://www.blogger.com/profile/09100014728062013042noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-53112943655355683722011-07-01T22:42:00.000+04:002011-07-01T22:42:08.522+04:00Новый дизайн блога<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="document" id="id1"> Источник: <a class="reference external" href="http://blog.python.org/2011/04/new-blog-design.html">New Blog Design</a><br /> <br /> Если Вы читаете блог <a class="reference external" href="http://blog-ru.python.org/">Python Insider</a> с помощью новостной ленты, то Вы, вероятно, не видели новый дизайн блога, который сделал для нас <a class="reference external" href="http://twitter.com/sigviper">Мартин Войтчук</a>. Новый дизайн выглядит здорово, оставляя при этом ощущение легкости, большего мы не могли и желать.<br /> <br /> Мартин, спасибо за потраченные время и усилия!</div> </div>Tatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-19313266176650455772011-06-25T00:10:00.000+04:002011-06-25T00:10:59.042+04:00Исправлена уязвимость в безопасности модулей urllib/urllib2<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="document" id="urllib-urllib2"> Источник: <a class="reference external" href="http://blog.python.org/2011/04/urllib-security-vulnerability-fixed.html">urllib Security Vulnerability Fixed</a><br /> <br /> Гвидо ван Россум <a class="reference external" href="http://hg.python.org/cpython/rev/a778b963eae3">недавно разместил в репозитории исправление</a> уязвимости CVE-2011-1521, проблемы безопасности в библиотеках Python, обеспечивающих работу с URL. Несмотря на то, что проблемы безопасности возникают редко, это событие - хороший повод посвятить сообщество в ход работы в случае их возникновения. Работа обычно состоит из 3 этапов: сообщения о проблеме, её анализе и исправления.<br /> <br /> <div class="section" id="id1"> <h4> Сообщение о проблеме</h4> <br /> Если Вы нашли проблему безопасности в CPython, то первое, о чем мы просим, - не разглашать подробности этой проблемы. После того, как Вы убедились, что действительно нашли проблему безопасности, лучшим способом донести эти знания до разработчиков ядра будет создать краткий, но детальный отчет.<br /> <br /> Из хорошего отчета можно точно определить, как обнаруженная проблема влияет на соответствующие части системы. Если проблема проявляется на какой-то конкретной платформе или зависит от наличия какого-либо другого кода в системе, то это также полезно знать разработчикам. Хорошо бы знать версии Python, которые затрагивает данная проблема, все актуальные версии Python будут протестированы на наличие указанной уязвимости. И последнее, если у Вас есть тест, отражающий данную проблему, не забудьте включить его в отчет. Всю информацию следует отправить группе <a class="reference external" href="mailto:security@python.org">security@python.org</a>.<br /> <br /> Нилс Хайнен из команды безопасности Google не так давно <a class="reference external" href="http://bugs.python.org/issue11662#msg131981">представил на рассмотрение хороший отчет</a>. Он обнаружил проблему в обработке перенаправления HTTP 302 модулями <a class="reference external" href="http://docs.python.org/library/urllib">urllib</a> и <a class="reference external" href="http://docs.python.org/library/urllib2">urllib2</a> из стандартной бибилиотеки Python. А выявил Нилс то, что сервер может перенаправлять запросы на неподходящие схемы, что приводит к ситуациям, опасным как для данных, так и для систем. В своем исходном сообщении Нилс рассказал о двух сценариях, когда такие перенаправления могут вызвать проблемы.<br /> <br /> Во-первых, поскольку <tt class="docutils literal">urllib</tt>/<tt class="docutils literal">urllib2</tt> использует обработчик для URL схемы <tt class="docutils literal"><span class="pre">file://</span></tt>, то перенаправление на <tt class="docutils literal"><span class="pre">file:///etc/passwd</span></tt> может раскрыть информацию о паролях. Нилс также пояснил, что перенаправление на системное устройство, подобно <tt class="docutils literal"><span class="pre">file:///dev/zero</span></tt>, может привести к исчерпанию ресурсов и, как следствие, к отказу от обслуживания.<br /> <br /> </div> <div class="section" id="id2"> <h4> Анализ сообщения об уязвимости</h4> <br /> Для уменьшения риска разглашения информации об уязвимости в список рассылки <a class="reference external" href="mailto:security@python.org">security@python.org</a> входит небольшая группа доверенных разработчиков, которые анализируют и обрабатывают сообщения как можно скорее. Если Вы хотите передавать информацию этой группе в зашифрованном виде, подробно об использовании OpenPGP читайте на страничке <a class="reference external" href="http://www.python.org/news/security/">новостей безопасности</a>.<br /> <br /> Если группа подтвердит наличие проблемы в безопасности, то эта уязвимость может быть анонсирована совместно с устраняющим ее патчем. В данном случае Гвидо ван Россум публично сообщил об уязвимости, которую нашел Нилс, в <a class="reference external" href="http://bugs.python.org/issue11662">issue #11662</a>, включив патч.<br /> </div> <div class="section" id="id3"> <h4> &nbsp;</h4> <h4> Исправление проблемы</h4> <br /> Патч, опубликованный Гвидо, ограничивает перенаправление следующими URL схемами: <tt class="docutils literal"><span class="pre">http://</span></tt>, <tt class="docutils literal"><span class="pre">https://</span></tt> и <tt class="docutils literal"><span class="pre">ftp://</span></tt>. Использование FTP перенаправления было признано допустимым, оно часто используется системами зеркалирования серверов загрузки, которые иногда перенаправляют запросы на географически более близкие FTP сервера.<br /> <br /> Теперь в Python версий 2.x, когда запрашивается перенаправление на неподходящую схему, метод <tt class="docutils literal">redirect_internal</tt> класса <a class="reference external" href="http://docs.python.org/library/urllib#urllib.FancyURLopener">FancyURLopener</a> генерирует исключение <tt class="docutils literal">IOError</tt>. Метод <tt class="docutils literal">http_error_302</tt> класса <a class="reference external" href="http://docs.python.org/library/urllib2#httpredirecthandler-objects">HTTPRedirectHandler</a> ведет себя аналогично, только будет генерировать исключение <tt class="docutils literal">HTTPError</tt>. В Python 3 такие же исправления внесены в работу модуля <a class="reference external" href="http://docs.python.org/dev/library/urllib.request">urllib.request</a>. В патч включены два теста, проверяющие перенаправление как на правильные, так и на неправильные схемы.<br /> <br /> Что касается пользователей Python, то последний выпуск Python 2.5, с доработкой в области безопасности, скоро появится. Несмотря на то, что плановые даты выпуска обновлений для версий 2.6, 2.7, 3.1 и 3.2 пока не определены, их исходный код был доработан для исправления данной уязвимости.</div> </div> </div>Tatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-47319800432274341282011-06-24T00:33:00.006+04:002011-06-24T01:02:48.587+04:00Знакомьтесь с командой: Тарек Зиади<div class="document" id="id1"> <p><em>Этот пост является частью цикла "Знакомьтесь с командой", который создан, чтобы представить и поближе узнать членов команды разработки ядра Python.</em></p> <p>Источник: <a class="reference external" href="http://blog.python.org/2011/04/meet-team-tarek-ziade.html">Meet the Team: Tarek Ziadé</a></p> <table class="docutils field-list" frame="void" rules="none"><colgroup><col class="field-name"></colgroup><colgroup><col class="field-body"></colgroup><tbody valign="top"><tr class="field"><th style="text-align: left;" class="field-name">Имя:</th><td class="field-body">Тарек Зиади</td></tr><tr class="field"><th style="text-align: left;" class="field-name">Местонахождение:</th><td class="field-body">Тюрси неподалёку от Дижона, Бургундия, Франция</td></tr><tr class="field"><th class="field-name">Домашняя страница:</th><td class="field-body"><a class="reference external" href="http://ziade.org/">http://ziade.org</a></td></tr></tbody></table> <p><strong>Как долго Вы программируете на Python?</strong></p> <p>Около 10 лет.</p> <p><strong>Как долго Вы являетесь разработчиком ядра?</strong></p> <p>С 21 декабря 2008 года.</p> <p><strong>Как вы стали разработчиком ядра? Помните ли свой первый коммит?</strong></p> <p>Я стал разработчиком ядра с целью поддерживать и развивать Distutils.</p> <p>Моим первым коммитом была правка небольшой ошибки в функциональности distutils, которую я предложил перед тем, как стать коммитером. Эта функциональность была добавлена в Python неделей раньше. Новшество заключалось в возможности конфигурировать команды Distutils register и upload, чтобы они могли работать с несколькими серверами, подобными pypi.</p> <p>Правка ошибки в этой функциональности и была моим первым коммитом, который я совершил 24 декабря 2008 года с моими только что полученными привилегиями. Этот день является ещё и моим днём рождения, а также 17-летней годовщиной выхода релиза Python 0.9.4.</p> <p><strong>Над какими частями Python Вы сейчас работаете?</strong></p> <p>Над стандартной библиотекой: sysconfig, distutils, packaging(добавлен в версии 3.3), shutil, pkgutil, а также время от времени над другими модулями.</p> <p><strong>Как Вы еще используете Python, помимо работы по разработке ядра?</strong></p> <p>Я работаю в Mozilla в сервис-команде, где создаю веб-службы с использованием Python.</p> <p><strong>Чем вы занимаетесь, когда не программируете?</strong></p> <p>Я читаю комиксы, рассказы в картинках, пишу книги, играю с моими детьми, пью вино с моей женой и пробую отреставрировать мой дом, который был построен в 1848 году.</p> </div>Alexei Romanoffhttp://www.blogger.com/profile/09100014728062013042noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-53863496677304820782011-06-10T17:30:00.001+04:002011-06-10T17:31:17.511+04:00Формализация политики управления изменением AST<div class="document" id="ast"> <p>Источник: <a class="reference external" href="http://blog.python.org/2011/04/formalizing-ast-change-control-policy.html">Formalizing the AST Change Control Policy</a></p> <p>В Python скомпилированные исходные тексты представляются в виде абстрактного синтаксического дерева с помощью <a class="reference external" href="http://docs.python.org/py3k/library/ast.html">модуля AST</a>. Модуль AST позволяет программисту анализировать и манипулировать представлением AST между процессами разбора исходников и компиляции их в байткод.</p> <p>Хотя смысл Python-кода определён в <a class="reference external" href="http://docs.python.org/py3k/reference/index.html">справочнике языка Python</a>, модуль AST является деталью реализации CPython, и он не является необходимым для реализации в других воплощениях Python.</p> <div class="section" id="id1"> <h4>Совместимость AST</h4> <p>В процессе выполнения <a class="reference external" href="http://bugs.python.org/issue11549">работы</a> по переписыванию <a class="reference external" href="http://en.wikipedia.org/wiki/Peephole_optimization">локального оптимизатора</a> CPython для работы с AST (а не обработки сырого байткода, как это сейчас происходит), Евгению Тодеру было необходимо внести некоторые изменения в структуру AST. Так как это является особенностью реализации CPython, сразу и не ясно, какую политику обратной совместимости нужно применять к AST. По этой причине Евгений <a class="reference external" href="http://mail.python.org/pipermail/python-dev/2011-April/110399.html">задал вопрос</a> в списке рассылки python-dev: &quot;Является ли необходимым при изменении AST обеспечивать обратную совместимость?&quot;</p> <p>Выработанное общими усилиями мнение было таково: совместимость <em>не</em> является необходимой. У модуля AST есть константа <tt class="docutils literal">ast.__version__</tt>, которая предоставляет программисту способ изменять поведение кода в зависимости от версии AST, с которой тот столкнулся. Эта возможность была признана достаточной для обеспечения совместимости в специфичном для воплощения Python модуле.</p> </div> <div class="section" id="python"> <h4>Другие воплощения Python</h4> <p>В действительности, мейнтейнеры Jython и IronPython указывали, что их соответствующие реализации обе имеют совместимые AST модули, или планируют предоставлять такую возможность. Однако, они не считают, что модуль AST должен быть заморожен, и не находят ничего плохого в том, что при изменении константы <tt class="docutils literal">ast.__version__</tt> AST будет изменяться с нарушением совместимости.</p> <p>Ещё один вопрос, который поднимался, касался полного набора тестов в <tt class="docutils literal">test_ast.py</tt>. Такой набор помог бы другим воплощениям Python обеспечить совместимость с CPython. Увеличение покрытия в <tt class="docutils literal">test_ast.py</tt> было бы хорошим проектом для кого-нибудь, кто хочет заняться разработкой ядра Python.</p> </div> <div class="section" id="id2"> <h4>Что же дальше?</h4> <p><a class="reference external" href="http://bugs.python.org/issue11549">Патч</a>, который послужил причиной дискуссии, до сих пор не включён в CPython. Поэтому, вероятно, всё останется как есть. Хотя, если он будет внесён в репозиторий, AST <em>будет</em> изменён с потерей совместимости. Константа <tt class="docutils literal">ast.__version__</tt> изменится для того, чтобы отразить это. Код пользователей сможет с помощью этой переменной определить, как себя вести. Если обобщить, то это будет способ изменить AST, который вероятно будет применяться в будущем.</p> <p>Разработчики Python заинтересованы в определении того, как широко используется AST, и насколько много коллизий будет иметь данная политика. Если у кого-нибудь из читателей есть код, на который будет влиять данное изменение, у них есть стимул поучаствовать в <a class="reference external" href="http://mail.python.org/pipermail/python-dev/2011-April/110399.html">обсуждении на python-dev этого вопроса</a>.</p> </div> </div>Alexei Romanoffhttp://www.blogger.com/profile/09100014728062013042noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-73105942389677393202011-06-10T17:23:00.001+04:002011-06-10T17:29:58.601+04:00Томас Хеллер, мейнтейнер ctypes, уходит в отставку<div class="document" id="ctypes"> <p>Источник: <a class="reference external" href="http://blog.python.org/2011/04/thomas-heller-steps-down-as-ctypes.html">Thomas Heller Steps Down as ctypes Maintainer</a></p> <p>Сообщество разработчиков Python горячо благодарит Томаса Хеллера, который долгое время поддерживает пакет <a class="reference external" href="http://docs.python.org/library/ctypes">ctypes</a>. Ранее в этом месяце Томас <a class="reference external" href="http://mail.python.org/pipermail/python-dev/2011-March/109395.html">заявил о своём уходе</a> из проекта CPython, который, начиная c Python 2.5, является родительским домом для его библиотеки <tt class="docutils literal">ctypes</tt>.</p> <p>У меня случился шанс поговорить с Томасом и он рассказал мне о своей истории, связанной с Python, а также его проектами <tt class="docutils literal">ctypes</tt> и <tt class="docutils literal">py2exe</tt>.</p> <div class="section" id="python"> <h4>Python</h4> <p>В 1999 году Томас искал источники для изучения языка Python и случайно приобрёл книгу Марка Лутца <a class="reference external" href="http://www.amazon.com/Programming-Python-Mark-Lutz/dp/0596009259">Programming Python</a>. И сразу же он был очарован этим языком. В тот момент он занимался заменой <a class="reference external" href="http://groups.csail.mit.edu/mac/projects/scheme/">Scheme</a> как языка расширений к большой программе, которую он написал на C для ОС Windows.</p> <p>Что касается его становления как члена команды разработчиков, его первым вкладом в CPython(а также в open source) был небольшой патч к <tt class="docutils literal">distutils</tt>, относящийся только к Windows. Интерес Томаса к <tt class="docutils literal">distutils</tt> в конечном счёте привёл его к разработке команды <tt class="docutils literal">bdist_wininst</tt>, которая позволяет создать установочный пакет Windows, устанавливаемый в систему одним кликом мыши. Начиная с того момента Грег Уорд пригласил его в группу python-dev, где он в итоге получил доступ на внесение изменений в репозиторий.</p> </div> <div class="section" id="py2exe"> <h4>py2exe</h4> <p>Как и у многих разработчиков для Windows, у Томаса существовала необходимость развёртывания готового к использованию Python-приложения как одного исполняемого файла. Ранее решения этой проблемы появились благодаря известным Python-разработчикам - Фредерику Ланду(<tt class="docutils literal">squeeze</tt>) и Кристиану Тисмеру( <tt class="docutils literal">sqfreeze</tt>), и Томас предложил несколько патчей Гордону МакМилану в его проект <a class="reference external" href="http://davidf.sjsoft.com/mirrors/mcmillan-inc/install1.html">Installer</a>, которые были приняты.</p> <p>Его интерес к <tt class="docutils literal">distutils</tt> привёл Томаса к мысли адаптировать <tt class="docutils literal">Installer</tt> в качестве расширения к этой библиотеке. Однако, он дошёл до того, что целиком переписал <tt class="docutils literal">Installer</tt> с целью воспользоваться существующим фреймворком <tt class="docutils literal">distutils</tt>. В конце концов он выбрал простое, но ёмкое, имя для проекта - <tt class="docutils literal">py2exe</tt>.</p> </div> <div class="section" id="id1"> <h4>ctypes</h4> <p>Идея создания <tt class="docutils literal">ctypes</tt> пришла из-за необходимости улучшения функциональности модуля <a class="reference external" href="http://sourceforge.net/projects/pywin32/">pywin32</a>. Также работа Томаса со Scheme требовала интерфейса к Windows API подобно тому, что требовался в его работе с Python, таким образом он хотел сохранить жизнь проекту.</p> <p><tt class="docutils literal">ctypes</tt> увидел свой первый общедоступный релиз в 2003 году после того, как Томас получил многочисленные просьбы опубликовать проект. Дата релиза была приурочена к выходу Python 2.3. Томас рассказал, что <tt class="docutils literal">ctypes</tt> был его небольшим личным проектом на его <a class="reference external" href="http://python.net/crew/theller/">Starship странице</a>, который затем вырос в широко используемую библиотеку в мгновение ока.</p> <p>Первоначально он начал проект на Windows, но быстро услышал призыв об адаптации пакета для Linux, завершить которую ему помогло сообщество. С помощью Linux-порта Томас пришёл к мысли о подключении библиотеки <a class="reference external" href="http://sourceware.org/libffi/">libffi</a> к своему проекту. Эту же библиотеку он также начал использовать на Windows для замены своей низкоуровневой реализации.</p> <p>2006 год примечателен релизом версии 1.0 <tt class="docutils literal">ctypes</tt>, который был связан c принятием <tt class="docutils literal">ctypes</tt> в качестве модуля стандартной библиотеки языка Python 2.5. После нескольких лет тяжёлого труда и многочисленных релизов каждый год, <tt class="docutils literal">ctypes</tt> стал сейчас неотъемлемой частью Python и доступен по умолчанию для обширной аудитории.</p> <p>Потребовалось большое количество усилий разных людей для доведения <tt class="docutils literal">ctypes</tt> до такого состояния, в котором она находится в настоящий момент. Томас хочет поблагодарить каждого участника, особенно Робина Бейкера. Робин был определяющим человеком на ранних фазах разработки проекта и помог как знаниями, так и своим воодушевлением.</p> </div> <div class="section" id="id2"> <h4>Новый ctypes-мейнтейнер</h4> <p>После многих лет тяжёлой работы Томас уходит, а нам ненавистна мысль видеть проект приходящим в состояние стагнации. Если у Вас есть опыт программирования на языке C и время для помощи проекту Python, сообщество было бы весьма признательно за Ваши усилия. Дополнительную информацию можно найти на странице для <a class="reference external" href="http://docs.python.org/devguide">новых разработчиков</a>, а также в <a class="reference external" href="http://bugs.python.org">системе отслеживания ошибок</a>.</p> </div> </div>Alexei Romanoffhttp://www.blogger.com/profile/09100014728062013042noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-68812373636036996192011-06-10T12:26:00.001+04:002011-06-10T12:27:56.114+04:00Знакомьтесь с командой: Бенджамин Петерсон<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="document" id="id1"> <i>Этот пост является частью цикла "Знакомьтесь с командой", который создан, чтобы представить&nbsp;</i><br /> <i>и поближе узнать членов команды разработки ядра Python.</i><br /> <br /> Источник: <a class="reference external" href="http://blog.python.org/2011/03/meet-team-benjamin-peterson.html">Meet the Team: Benjamin Peterson</a><br /> <table class="docutils field-list" frame="void" rules="none"><tbody valign="top"> <tr class="field"><th class="field-name" colspan="2"></th></tr> <tr><td class="field-body"></td></tr> <tr class="field"><th class="field-name">Имя:</th><td class="field-body">Бенджамин Петерсон</td> </tr> <tr class="field"><th class="field-name">Местонахождение:</th><td class="field-body">Миннесота, США</td> </tr> <tr class="field"><th class="field-name">Сайт:</th><td class="field-body"><a class="reference external" href="http://benjamin-peterson.org/">http://benjamin-peterson.org</a></td> </tr> <tr class="field"><th class="field-name">Блог:</th><td class="field-body"><a class="reference external" href="http://pybites.blogspot.com/">http://pybites.blogspot.com</a></td> </tr> </tbody> </table> <br /> <b>Как долго Вы программируете на Python?</b><br /> <br /> 3.5 года.<br /> <br /> <b>Как долго Вы работаете разработчиком ядра?</b><br /> <br /> Ровно 3 года было 25 марта.<br /> <br /> <b>Как вы стали разработчиком ядра? Помните ли свой первый коммит?</b><br /> <br /> <a class="reference external" href="http://bugs.python.org/issue1828">Гвидо лично отклонил</a> мое первое предложение. К счастью, я устоял и некоторые патчи были приняты. По-моему, моим первым коммитом было переупорядочивание файла Misc/ACKS.<br /> <br /> <b>Над какими частями Python Вы сейчас работаете?</b><br /> <br /> Мне нравится парсер, компилятор и ядро интерепретатора, но я славлюсь тем, что участвую понемногу практически во всех областях разработки ядра Python ...кроме Windows!<br /> <br /> <b>Как Вы еще используете Python, помимо работы по разработке ядра?</b><br /> <br /> Я разрабатываю интерпретатор Python на Python (<a class="reference external" href="http://pypy.org/">http://pypy.org</a>)! На самом деле, я в глубине души разработчик языка Python. :) Я создатель пакета six (<a class="reference external" href="http://pypi.python.org/pypi/six">http://pypi.python.org/pypi/six</a>) - библиотеки для обеспечения совместимости Python 2 и 3.<br /> <br /> <b>Что Вы делаете, когда не программируете?</b><br /> <br /> Сочиняю музыку, играю на кларнете и читаю книги по математике. Еще время от времени хожу в небольшие походы. </div> </div>Tatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-4263460538485482252011-06-10T11:58:00.000+04:002011-06-10T11:58:42.159+04:00Устаревания возможностей между Python 2.7 и 3.х<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="document" id="python-2-7-3"> Источник: <a class="reference external" href="http://blog.python.org/2011/03/recent-discussion-on-python-dev.html">Deprecations between Python 2.7 and 3.x</a><br /> <br /> Недавнее <a class="reference external" href="http://mail.python.org/pipermail/python-dev/2011-March/109010.html">обсуждение в python-dev</a> выявило проблему, связанную с текущими правилами устаревания интерфейсов Python, с которой сталкиваются разработчики при миграции кода с Python 2.7 на текущие версии Python 3.x. В качестве решения данной проблемы команда разработчиков изменила существующие правила устаревания с учетом того, что программисты чаще всего будут портировать код с Python 2.7 сразу на последнюю версию 3.x, минуя более старые версии.<br /> <br /> <div class="section" id="e"> <h4> Прeдпосылки</h4> <br /> В Python существует сильная приверженность к поддержанию обратной совместимости. Изменения разрешаются только в случае соблюдения правил совместимости, которые, по сути, заключаются в том, что правильно написанные программы не должны ломаться при исполнении новой версией Python. Однако, это не всегда возможно, например, если API абсолютно не рабочий и должен быть заменен. В таком случае Python следует политике устаревания, основанной на одногодичном переходном периоде, во время которого возможности, которые вскоре будут удалены, становятся официально устаревшими. В течение переходного периода при попытке использования устаревшей возможности должно выдаваться соответствующее предупреждение, чтобы дать разработчикам время обновить свой код. Полная информация о политике устаревания описана в <a class="reference external" href="http://www.python.org/dev/peps/pep-0005/">PEP 5</a>. Поскольку изменения появляются только в новых выпусках Python, а обычно интервал между выпусками составляет 18 месяцев, нормальным оказывается период устаревания длительностью в один выпуск.<br /> <br /> Единственным исключением такой стратегии был Python 3. Замена основной версии с Python 2 на Python 3 была сделана намеренно, чтобы допустить изменения, нарушающие обратную совместимость, и дать шанс разработчикам языка Python исправить те проблемы, которые не могли быть решены в рамках существующей политики. Например, создание строк по умолчанию в Unicode, возврат итераторов вместо списков.<br /> <br /> </div> <div class="section" id="id1"> <h4> Параллельные пути разработки</h4> <br /> Учитывая то, что переход к Python 3 потребует времени, около 5 лет по многочисленным оценкам, в этот период ожидалась, в некоторой степени, параллельная разработка на Python 2 и 3.<br /> <br /> Было решено, увеличить период поддержки Python 2.7, последнего выпуска Python 2, на значительный срок. В итоге, разработчики, которые захотят перейти на более новую версию Python, должны будут переходить на Python 3.<br /> <br /> Здесь-то как раз и проблема...<br /> <br /> </div> <div class="section" id="id2"> <h4> Неожиданные устаревания</h4> <br /> Один из участников <a class="reference external" href="http://mail.python.org/pipermail/python-dev/2011-March/109010.html">дискуссии в python-dev</a> обратил внимание на то, что определенная функция в C API, а именно <tt class="docutils literal">PyCObject_AsVoidPtr</tt>, была удалена без достаточно заметного предупреждения. А это именно то, от чего политика устаревания должна была защищать. Что же случилось?<br /> <br /> Данное изменение было частью миграции со старого API (<tt class="docutils literal">PyCObject</tt>) на новый, усовершенствованный (<tt class="docutils literal">PyCapsule</tt>). Проблема в том, что в 2.6 по умолчанию используется <tt class="docutils literal">PyCObject</tt>, единственно доступный API в Python 2.6, который был объявлен устаревшим в Python 2.7. В Python 3.2 данный API отсутствует и должено использоваться новый - <tt class="docutils literal">PyCapsule</tt>. Получается, что период объявленного устаревания, с выпуска Python 2.7 (июль 2010) до выпуска Python 3.2 (февраль 2011), составил около 7 месяцев. Что значительно меньше 12 месяцев и усложняет разработчикам поддержку приложений для достаточно широкого набора версий Python.<br /> <br /> Для тех, кто переходит с версии 3.0 на 3.1, а затем на 3.2, процесс устаревания проходит хорошо. Python 3.1 вышел в марте 2010 с необходимыми уведомлениями об устареваниях, поэтому в рамках версий 3.х период устаревания длился почти 12 месяцев. Однако, это не тот путь, которому, на самом деле, следуют разработчики - они переходят с 2.7 сразу на последнюю версию 3.х, в данном случае 3.2, и, как следствие, получают данную проблему. Возникновение такой ситуации никогда не являлось целью python-dev, но PEP 5 не учитывал случай активной разработки параллельно двух версий Python.<br /> <br /> </div> <div class="section" id="id3"> <h4> Что же нам делать?</h4> <br /> Несмотря на то, что поломка <tt class="docutils literal">PyCObject</tt>/<tt class="docutils literal">PyCapsule</tt> API безусловно является проблемой; ее возможно обойти, но, как минимум, у одного участника python-dev возникли сложности с ее преодолением. В общем и целом, такого не должно было произойти.<br /> <br /> Конкретно для случая <tt class="docutils literal">PyCObject</tt>/<tt class="docutils literal">PyCapsule</tt> проблема уже существует и с этим ничего не поделаешь. Восстановление <tt class="docutils literal">PyCObject</tt>, в сущности, не вариант, так как только усугубит дальнейшую несовместимость. Тем не менее, по общему мнению возможно, хотя и трудоемко, написать код, который бы подстраивался под API. В действительности, <tt class="docutils literal">PyCObject</tt> API в Python 3.1 был написан как оболочка вокруг <tt class="docutils literal">PyCapsule</tt> API. Было выдвинуто предложение о том, что при необходимости реализация Python 3.1 может быть выделена для использования сторонним кодом. Более того, было решено, что будет написан "ретроактивный" PEP, учитывающий изменение. Он будет описывать причины, оправдывающие изменение, и документировать ресурсы, которые помогут разработчикам в миграции.<br /> <br /> В более общих чертах, команда разработчиков Python обратила внимание на проблему и будет работать над тем, чтобы она не возникла вновь. Гвидо <a class="reference external" href="http://mail.python.org/pipermail/python-dev/2011-March/109450.html">описал</a> данную ситуацию и предложил, чтобы Python 3 старался не использовать устаревания в данный момент. Как минимум, устаревшие API будут поддерживаться значительно дольше, чтобы дать возможность разработчикам корректно смигрировать с Python 2.7.<br /> Независимо от этого, участниками дискуссии был поднят вопрос о том, как более эффективно сообщать об изменениях в Python широкой аудитории. Для решения данной задачи и был создан этот блог.<br /> <br /> </div> <div class="section" id="id4"> <h4> Что все это значит?</h4> <br /> Во-первых, это означает, что разработчики Python не всегда делают все правильно. Ни у кого не было намерений усложнять жизнь разработчикам, просто эта проблема не была вовремя замечена.<br /> <br /> Во-вторых, исправление такой ситуации может больше навредить, чем помочь, поэтому <tt class="docutils literal">PyCObject</tt> API не будет восстановлен. Хотя восстановление, возможно, поможет разработчикам, столкнувшимся с изменением API, но в ситуация с поддежкой совместимости только усложнилась бы. Тем временем, мы должны смириться с этой проблемой и двигаться дальше. Уроки усвоены, и мы постараемся не повторять тех же ошибок.<br /> <br /> Эта история в том числе свидетельствует о том, что команда разработчиков Python хочет иметь обратную связь от пользователей. Совместимость очень важна, и мы прилагаем все усилия, чтобы переход на новые версии был безболезненным, насколько это возможно. В частности, разработчики библиотек должны иметь возможность поддерживать различные версии Python, прикладывая при этом не слишком много усилий.<br /> <br /> И наконец, разработчики не бросили 2.7. Несмотря на то, что не будет появляться новых возможностей и не будет версии 2.8, взгляды людей, использующих 2.7, по-прежнему важны. Для всего сообщества Python очень важно дать возможность пользователям перейти на версии 3.х в тот момент, когда они будут готовы.</div> </div> </div>Tatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-29472517280240804202011-06-08T13:20:00.000+04:002011-06-08T13:20:50.965+04:00Про опрос, futures и параллельное исполнение<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="document" id="futures"> Источник: <a class="reference external" href="http://blog.python.org/2011/03/of-polling-futures-and-parallel.html">Of polling, futures and parallel execution</a><br /> <br /> Одной из важных задач современной вычислительной техники является сбережение энергии. Это крайне важно для портативных устройств (ноутбуков, планшетов, карманных компьютеров). Современный процессор может находиться в различных энергосберегающих режимах во время простоя. Чем дольше простаивает процессор, тем более глубоким становится режим энергосбережения, и тем меньше потребление энергии, и, следовательно, дольше живет батарейка на одном заряде.<br /> <br /> У энергосберегающих режимов есть враг - опрос. В ситуации, когда задача требует периодического исполнения процессором, даже для чего-то тривиального вроде обращения к ячейке памяти, проверяя наличие возможных изменений, процессор выходит из энергосберегающего режима, готовит все свои внутренние структуры для работы, но возвращается обратно в энергосберегающий режим спустя заметное время после завершения даже такой незначительной операции, что уменьшает срок жизни батарейки. Компания Intel также <a class="reference external" href="http://www.lesswatts.org/projects/applications-power-management/avoid-pulling.php">озабочена данной проблемой</a>.<br /> <br /> Python 3.2 поставляется с новым стандартным модулем, который запускает параллельные задачи и ожидает окончания их работы: <a class="reference external" href="http://docs.python.org/dev/library/concurrent.futures.html">модуль concurrent.futures</a>. Внимательно изучая код модуля, я заметил, что в некоторых рабочих потоках и процессах используется опрос. Я говорю "в некоторых", поскольку реализации классов <a class="reference external" href="http://docs.python.org/dev/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor">ThreadPoolExecutor</a> и <a class="reference external" href="http://docs.python.org/dev/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor">ProcessPoolExecutor</a> отличаются. Если первый проводит опрос в каждом рабочем потоке, то последний делает это только в одном потоке, который назвается потоком управления очередью и используется для связи с рабочими процессами.<br /> <br /> В данном случае опрос используется с единственной целью: определить, когда должна запуститься процедура обработки события завершения процесса. Остальные задачи, такие как построение очереди вызываемых объектов или сбор результатов из ранее помещенных в очередь вызываемых объектов, используют объекты типа синхронизированная очередь. Эти объекты типа очередь импортируются или из модуля threading, или из multiprocessing, в зависимости от того, какой используется Executor.<br /> <br /> И я предложил <a class="reference external" href="http://bugs.python.org/issue11635">простое решение</a>: я заменил опрос сигнальной меткой, встроенной сигнальной меткой по имени None. Когда в очередь добавляется None, один рабочий процесс, находящийся в состоянии ожидания, естественным образом пробуждается и проверяет нужно ли ему завершаться. В случае ProcessPoolExecutor возникает небольшая сложность, поскольку нам нужно пробудить N рабочих процессов помимо потока управления очередью.<br /> <br /> В первоначальном патче по-прежнему есть таймаут опроса, настолько большой (10 минут), чтобы все рабочие процессы успели пробудиться. Большой таймаут существует по той причине, что код содержит дефекты и процессы не получают вовремя уведомление о необходимости завершения от вышеупомянутой сигнальной метки. Из любопытства я углубился в исходный код модуля multiprocessing и пришел к другому интересному наблюдению: под Windows, метод <a class="reference external" href="http://docs.python.org/dev/library/multiprocessing.html#multiprocessing.Queue.get">multiprocessing.Queue.get()</a> при ненулевом и конечном таймауте использует...опрос (по этому вопросу я открыл <a class="reference external" href="http://bugs.python.org/issue11668">issue 11668</a>). Этот метод использует интересный высокочастотный вид опроса, он начинается с таймаута в одну милисекунду, а затем увеличивается с каждой итерацией.<br /> <br /> Очевидно, что использование таймаута, даже очень большого, делает мой патч абсолютно бесполезным под Windows, поскольку специфика реализации таймаута приводит к тому, что пробуждения происходят каждую милисекунду. Я решил взять быка за рога и удалил большой таймаут опроса. Мой последний патч совсем не использует таймаут, и потому не должны возникать периодические пробуждения, независимо от платформы.<br /> <br /> Раньше, до версии Python 3.2, опрос использовался для всех реализаций таймаута в модуле threading, а также и в большей части модуля multiprocessing, поскольку последний использует рабочие потоки для различных задач. Это было исправлено в <a class="reference external" href="http://bugs.python.org/issue7316">issue 7316</a>.</div> </div>Tatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-68781102847812121692011-05-27T20:08:00.001+04:002011-06-08T12:48:27.174+04:00Отчет о Language Summit 2011<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="document" id="language-summit-2011"> Источник: <a class="reference external" href="http://blog.python.org/2011/03/2011-language-summit-report.html">2011 Language Summit Report</a><br /> <br /> В этом году Language Summit проходил 10 марта в Атланте, за день до этого началась конференция PyCon. Среди присутствующих были участники проектов <a class="reference external" href="http://www.python.org/">CPython</a>, <a class="reference external" href="http://www.pypy.org/">PyPy</a>, <a class="reference external" href="http://www.jython.org/">Jython</a>, <a class="reference external" href="http://www.ironpython.net/">IronPython</a> и <a class="reference external" href="http://www.parrot.org/">Parrot</a>; разработчики пакетов для дистрибутивов <a class="reference external" href="http://www.fedoraproject.org/">Fedora</a>, <a class="reference external" href="http://www.ubuntu.com/">Ubuntu</a> и <a class="reference external" href="http://www.debian.org/">Debian</a>; а также участники проекта <a class="reference external" href="http://www.twistedmatrix.com/">Twisted</a> и многие другие.<br /> <br /> <div class="section" id="id1"> <h4> Блог разработки </h4> <br /> Первым на повестке дня было обсуждение именно этого блога, который основал Дaг Хеллманн, представитель PSF Communications. В отличие от динамичного и насыщенного списка рассылки python-dev, наш блог обещает быть более простым источником новостей разработки. Мы собираемся освящать предложения по развитию Python (PEPs), ключевые решения, новые возможности и важные исправления, а также будем сообщать о происходящем в процессе разработки.<br /> <br /> Блог открыт для всех реализаций Python. Например, хотя у PyPy уже есть <a class="reference external" href="http://morepypy.blogspot.com/">свой собственный блог</a>, они могут размещать свои новости еще и здесь. Недавние подобные обсуждения привели к тому, что сейчас можно скачать альтернативные реализации на <a class="reference external" href="http://python.org/download">странице загрузки python.org</a>. Сообщения о появлении новых релизов будут размещаться на главной странице <a class="reference external" href="http://www.python.org/">python.org</a> в разделе новостей.<br /> <br /></div> <div class="section" id="id2"> <h4> Предостережения о совместимости </h4> <br /> С версией 3.2 мы представили ResourceWarning, позволяющее найти области кода, зависящие от механизма управления памятью в CPython путем подсчета количества ссылок на объекты. Предостережения не только помогают разработчикам создавать лучший код, но также и более надежный, совместимый с различными реализациями виртуальной машины. Для дальнейшего повышения переносимости кода между виртуальными машинами был предложен новый вид предостережения: CompatibilityWarning.<br /> <br /> Эта идея возникла в связи с недавно найденной ошибкой в CPython разработчиками PyPy. В <a class="reference external" href="http://bugs.python.org/issue11455">Issue #11455</a> описана ситуация, в которой CPython позволяет пользователю создать тип с нестроковыми ключами в его <tt class="docutils literal">__dict__</tt>, что не поддерживается, по крайней мере, в PyPy и Jython. В идеале, пользователи могли бы включить предостережение для подобных случаев, также как это делается с ResourceWarning.<br /> <br /></div> <div class="section" id="id3"> <h4> Отдельная стандартная бибилиотека</h4> <br /> Теперь, когда перенос исходников CPython из Subversion в Mercurial завершен, идея о выделении стандартной библиотеки в отдельный репозиторий возродилась. Разработчики других реализаций очень заинтересованны в таком отделении, поскольку это заметно упростит для них процесс разработки. Сейчас они берут снапшот CPython и прикладывают все свои патчи, заменяют некоторые расширения на C аналогами, написанными на Python и т.д.<br /> <br /> Данное предложение нужно будет представить на предстоящем PEP, и одним из обсуждаемых вопросов будет решение задачи версионирования стандартной библиотеки. После того, как бибилиотека будет жить независимо от какой-либо реализации, вероятно, у нее появятся свои версии, также нужно будет версифицировать и тесты.<br /> <br /> Другой темой, обсуждаемой в рамках предложения об отделении стандартной библиотеки, были реализации на Python и их аналоги, написанные с помощью языка С. Мачей Фиялковски, участник проекта PyPy, заметил, что, со временем, некоторые модули стали немного отличаться по своим возможностям в версиях, написанных на C и Python. Поскольку вопрос об отделении библиотеки стал актуальным, был предложен более строгий подход к модификации таких модулей, чтобы не было необходимости привязываться к определенной реализации. <br /> Кроме того, предпочтение было отдано реализациям модулей на Python, в то время, как реализации на C будут разрешены только в случае их заметно лучшей производительности.<br /> <br /></div> <div class="section" id="id4"> <h4> Сайт для тестирования производительности </h4> <br /> PyPy Speed Center показал отличные результаты с точки зрения отображения производительности PyPy, поэтому обсуждалось, не организовать ли подобный сайт на python.org, что-нибудь вроде performance.python.org, для всех виртуальных машин. Также рассматривались и другие бенчмарки - потребления памяти, успешности прохождения тестов, совместимости с языком. Очевидно, потребуются некоторые усилия, чтобы адаптировать инфраструктуру для работы с различными реализациями Python, как это сейчас тестируется для PyPy vs. CPython.<br /> <br /> Разговор о размещении высокопроизводительных машин в <a class="reference external" href="http://osuosl.org/">Open Source лаборатории в университете Орегона</a>, где работает Эллисон Рэндал, вызвал обсуждение вопроса о расположении нового Speed Center. Джесси Ноллер рассказал о работе по поиску оборудования для лаборатории -- пожертвования приветствуются!<br /> <br /> Если Вы или Ваша организация заинтересованы в спонсировании этого или других проектов, пожалуйста, обращайтесь в <a class="reference external" href="http://www.python.org/psf/about">Python Software Foundation</a>, а также ознакомьтесь с нашими <a class="reference external" href="http://www.python.org/psf/donations">предложениями для спонсоров</a>.<br /> <br /></div> <div class="section" id="id5"> <h4> Снят мораторий</h4> <br /> С началом разработки CPython 3.3 снят мораторий на изменения языка. Несмотря на появившуюся возможность, изменения языка ожидаются незначительными, поскольку пока что мы пытаемся их замедлить, чтобы позволить альтернативным реализациям Python нас нагнать. Хотя никто не смог достичь версий 3.х, но, благодаря мораторию, PyPy и IronPython уже совместимы с версией 2.7, и IronPython начинает движение по тернистому пути к 3.х.<br /> <br /> Что касается ожидаемых изменений в 3.3, следите за утверждением <a class="reference external" href="http://www.python.org/dev/peps/pep-0380">PEP 380</a>. В этом PEP представлен новый синтаксис <tt class="docutils literal">yield from &lt;expr&gt;</tt>, позволяющий одному генератору выполнить <tt class="docutils literal">yield</tt> для другого. Никаких других изменений в близжайшее время не ожидается.</div> <div class="section" id="id6"> <h4> &nbsp;</h4> <h4> Атрибуты исключений</h4> <h4> &nbsp;</h4> Далее коротко рассматривался вопрос о том, чтобы при работе с исключениями можно было получить что-то большее, чем сообщения в виде строки. Например, при ImportError было бы удобно непосредственно получить информацию о незаимпортированном модуле, а не искать эти данные в строках.<br /> <br /> Реализовано это будет скорее всего посредством указания keyword-only аргумента при инициализации объекта исключения, <a class="reference external" href="http://bugs.python.org/issue8754">для ImportError</a> патч уже есть.</div> <div class="section" id="id7"> <h4> &nbsp;</h4> <h4> Соглашение участника</h4> <h4> &nbsp;</h4> Также обсуждались юридические вопросы, и некоторые варианты электронного соглашения участника находятся в процессе разработки. <a class="reference external" href="http://code.google.com/legal/individual-cla-v1.0.html">Соглашение участника</a>, разработанное компанией Google, было одним из тех, которое повлияло на представление того, как новая система должна работать. Вопрос долго обсуждался и многие ожидали его решения. Кроме того, было проведено исследование с целью убедиться, что переход на электронную версию соглашения не противоречит национальным законодательствам разных стран.<br /> <br /></div> <div class="section" id="google-summer-of-code"> <h4> Google Summer of Code</h4> <h4> &nbsp;</h4> Мартин фон Лёвис сообщил об проведении Google Summer of Code под эгидой PSF. Разработчикам предлагается не только быть наставниками, но и предлагать студентам проекты для работы. Но то, что именно Вы предложили проект, вовсе не означает, что Вы будете руководить им. Если Вы хотите принять участие, посетите страницу <a class="reference external" href="http://pyfound.blogspot.com/2011/03/google-summer-of-code-call-for-projects.html">Call for Projects and Mentors</a> на сайте новостей PSF.<br /> <br /></div> <div class="section" id="distutils"> <h4> Distutils</h4> <br /> Вышел <a class="reference external" href="https://bitbucket.org/tarek/distutils2/wiki/Home">Distutils2</a> и Тарек Зиаде рассказал, что их спринтерской целью было закончить портирование на Python 3 и подготовиться к будущему слиянию со стандартной библиотекой Python. После слияния название изменится на <tt class="docutils literal">packaging</tt>. Команда разработчиков планирует также выпустить отдельный пакет, которыый по-прежнему будет называться Distutils2, и будет совместим с Python версий 2.4 - 3.2.<br /> <br /> Результат этого спринта, который по количеству участников был одним из самых многочисленных среди прочих спринтов на PyCon, оказался очень успешным. Код лежит на <a class="reference external" href="https://bitbucket.org/tarek/cpython">BitBucket</a>, в ожидании слияния со стандартной библиотекой.<br /> <br /></div> <div class="section" id="id8"> <h4> Будущее других виртуальных машин</h4> <br /> IronPython рассказал о своих планах, и релиз 3.х - близжайшая цель. Они анонсировали релиз 2.7.0 на PyCon, это их первый релиз после отделения от Microsoft, и они планируют начинать движение в сторону 3.x в близжайшие 3 месяца.<br /> <br /> Jython недавно выпустил релиз 2.5.2 и начал планировать выпуск 2.6. Некоторые предполагали, что они перепрыгнут сразу на версию 2.7, поскольку разница между 2.6 и 2.7 не так уж и велика, однако, переход на 2.7, минуя 2.6, может потребовать больше времени до выпуска первого релиза. "Release early, release often" - одна из поговорок, прозвучавших в разговоре, но, возможно, у них получится сразу на 3.х, учтя различия в 2.6 и 2.7 постфактум.<br /> <br /></div> <div class="section" id="id9"> <h4> Финансирование разработки</h4> <h4> &nbsp;</h4> Разговоры о работах над 3.x подняли вопрос финансирования разработки и как это могло бы ускорить некоторые альтернативные реализации для достижения 3.х. Несмотря на наличие финансирования, прежде чем что-либо обсуждать, необходимо сначала выдвинуть конкретное предложение. Заинтересовавшимся в получении гранта на данные цели следует связаться с PSF.</div> <div class="section" id="baseline-python"> <h4> &nbsp;</h4> <h4> Baseline Python</h4> <br /> Джим Фултон начал дискуссию о том, что он называет "baseline" Python. Основываясь на своем опыте распространения Python-приложений, он пришел к заключению, что Python, распространяемый вместе с операционными системами, непредсказуем и многим приложениям трудно работать с ним. Так как присутствовали специалисты Fedora и Ubuntu/Debian, у нас была возможность изучить, почему дело обстоит именно так.<br /> <br /> В случае Fedora, baseline Python входит в Live CD, и это очень примитивная сборка с небольшим количеством зависимостей, по сути - абсолютный минимум, позволяющий запустить систему. Дополнительные отличия видны в расположении директорий, отсутствии стандартных модулей, таких как distutils, или наличии устаревших библиотек.<br /> <br /> Пока хорошего решения нет, но заинтересованные стороны будут продолжать работу над этой проблемой.</div> <div class="section" id="id10"> <h4> &nbsp;</h4> <h4> Новые возможности в 3.3</h4> <h4> &nbsp;</h4> Обсуждалось несколько идей о нововведениях в версии 3.3, в том числе из двух PEP. <a class="reference external" href="http://www.python.org/dev/peps/pep-0382">PEP 382</a>, касающееся Namespace Packages, должно быть реализовано в какой-то момент цикла подготовки релиза. Этот вопрос также упоминался в рамках разговора о слиянии distutils.<br /> <br /> <a class="reference external" href="http://www.python.org/dev/peps/pep-0393">PEP 393</a>, описывающее гибкое представление строки, также было предметом обсуждения и заинтересовало нескольких студентов в качестве проекта для GSoC. Помимо непосредственно самой реализации, необходимо уделить внимание вопросам производительности и работы с памятью, чтобы понять, можно ли принять данное PEP.</div> <div class="section" id="unladen-swallow"> <h4> &nbsp;</h4> <h4> Unladen Swallow</h4> <br /> Unladen Swallow сейчас "на отдыхе" и не будет включен в CPython 3.3 в том виде, в котором он есть в данный момент. Для дальнейшего развития мы должны привлечь нескольких гуру, поскольку собственные эксперты не могут выполнить эту работу. В процессе обсуждения снова упоминали о финансировании, как о возможности продвинуть этот проект, заинтересованные стороны должны обратиться в PSF.<br /> <br /> Несмотря на то, что Unladen Swallow сейчас не развивается и будущее его не определено, проект принес много пользы как для Python, так и вообще для open source сообщества. Коллекция тестов, который использовал Unladen Swallow, оказалась очень полезным, например, для тестирования других реализаций Python. Кроме того, развивая LLVM и Clang, разработчики Unladen Swallow также помогают тем проектам.<br /> <br /> Поверхностно обсуждались еще две идеи, касающиеся производительности, в том числе предложение Дэйва Малькома про function inlining. Мартин фон Лёвис рассказал, что он сейчас работает над модулем расширения JIT, но разработчики PyPy отнеслись скептически к эффективности JIT в этой области.<br /> <br /></div> <div class="section" id="id11"> <h4> Подготовка почвы для асинхронных фреймворков</h4> <h4> &nbsp;</h4> В завершение дня рассматривался вопрос о частичной интеграции Twisted со стандартной библиотекой. Основная идея состоит в том, чтобы появилась альтернатива asyncore, облегчающая переход к Twisted и другим фреймворкам асинхронного программирования.<br /> <br /> Процесс будет описан в предстоящем PEP, которое, как некоторые предполагают, будет аналогично описанию WSGI, но для целей асинхронного программирования. Вместе с авторами PEP проекты Twisted и иные должны убедиться в том, что все одинаково понимают задачу.<br /> <br /></div> <div class="section" id="id12"> <h4> Дополнительная информация</h4> <br /> Более подробно о прошедшем мероприятии можно узнать из <a class="reference external" href="http://boredomandlaziness.org/2011/03/python-language-summit-rough-notes.html">отдельных</a> и <a class="reference external" href="http://boredomandlaziness.org/2011/03/python-language-summit-highlights.html">избранных</a> записок разработчика CPython Ника Коглана.</div> </div> </div>Tatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.com0tag:blogger.com,1999:blog-7965221399893275948.post-52758198811433560342011-05-23T02:11:00.000+04:002011-06-10T12:48:24.388+04:00Добро пожаловать в Python Insider!<div class="document" id="python-insider"> <p>Источник: <a class="reference external" href="http://blog.python.org/2011/03/welcome-to-python-insider.html">Welcome to Python Insider!</a></p> <p><a class="reference external" href="http://blog-ru.python.org/">Python Insider</a> - официальный блог команды разработчиков ядра Python. Наш блог поможет составить представление о том, какими вопросами мы занимаемся для тех, кто не подписан на список рассылки, но, главным образом, будет сообщать об изменениях ядра Python. Мы будем писать об происходящем в Python-Dev, например, о недавно завершенной миграции на Mercurial хостинг, об утверждении предложений по развитию Python (Python Enhancement Proposal (PEPs)), об изменениях API, а также о многих других важных событиях в области разработки ядра Python.</p> <p>Этот блог будет скорее дополнением, чем заменой, для cписка рассылки <a class="reference external" href="http://mail.python.org/mailman/listinfo/python-dev">python-dev</a> и личных блогов разработчиков. Он обеспечит возможность публично обсуждать проекты, а также привлекать новых волонтеров при необходимости. Конечно обсуждения в блоге приветствуются, но мы надеемся, что люди заинтересовавшиеся нашими постами, подпишутся на список рассылки Python-Dev и будут участвовать в обсуждениях и разработке напрямую.</p> <p>Относитесь к этому блогу как к окошку в мир эволюции Python.</p> <div class="section" id="id1"> <h4>Подписка</h4> <p>Несколько способов следить за обновлениями в Python Insider:</p> <ul class="simple"> <li><a class="reference external" href="http://planet.python.org/">Planet Python</a> (English)</li> <li><a class="reference external" href="http://blog-ru.python.org/">В Интернете</a></li> <li><a class="reference external" href="http://feeds.feedburner.com/PythonInsiderRu">Atom/RSS Feed</a></li> <li><a class="reference external" href="http://twitter.com/PythonInsider">&#64;PythonInsider</a> on Twitter (English)</li> <li><a class="reference external" href="http://feedburner.google.com/fb/a/mailverify?uri=PythonInsiderRu&amp;loc=ru_RU">Email subscription</a></li> </ul> </div> <div class="section" id="id2"> <h4>Требуется помощь</h4> <p>У нас уже есть группа выделенных людей, которые работают над постами для блога, но нам еще нужен веб-дизайнер для работы над шаблоном Blogger-а. Если Вы можете помочь нам обеспечить &quot;подтяжку лица&quot; нашего блога, обращайтесь к Doug Hellmann (doug dot hellmann at gmail).</p> </div> </div>Tatiana Tereshchenkohttp://www.blogger.com/profile/02804165619422680337noreply@blogger.com0