The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Релиз PyPy 6.0, реализации Python, написанной на языке Python

26.04.2018 23:32

Состоялся выпуск проекта PyPy 6.0, в рамках которого развивается реализации языка Python, написанной на языке Python (используется статически типизированное подмножество RPython, Restricted Python). Выпуск подготовлен одновременно для веток PyPy2.7 и PyPy3.5, обеспечивающих поддержку синтаксиса Python 2.7 и Python 3.5, и поставляемых с stdlib 2.7.13 и 3.5.3. Выпуск доступен для Linux (x86, x86_64, PPC64, s390x, ARMv6 или ARMv7 с VFPv3), macOS (x86_64), OpenBSD, FreeBSD и Windows (x86). PyPy3.5 5.10 отмечен как первый стабильный релиз ветки 3.5 для Linux и macOS (поддержка Windows пока имеет статус бета-версии).

Особенностью PyPy является использование JIT-компилятора, на лету транслирующего некоторые элементы в машинный код, что позволяет обеспечить высокий уровень производительности - при выполнении некоторых операций PyPy в несколько раз обгоняет классическую реализацию Python на языке Си (CPython). Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти - общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза.

В новом выпуске:

  • Значительно увеличена производительность и расширена функциональность прослойки cpyext для обеспечения совместимости с C-API.
  • Улучшена совместимость с CPython.
  • Обеспечена генерация более понятных сообщений в случае выявления синтаксических ошибок.
  • В сборщик мусора добавлена возможность подключения обработчиков для сбора информации о производительности.
  • Обеспечена совместимость с бэкендом TkAgg, применяемым по умолчанию в Matplotlib, что решило проблему с поддержкой пакетов pygame и pygobject.
  • Обновлены модули CFFI 1.11.5 (C Foreign Function Interface) и cppyy 0.6.0 с реализацией интерфейса для вызова функций, написанных на языках Си и C++.

Код для перевода внутреннего представления строк на utf8 не вошёл в релиз. На начальной стадии находится реализация поддержки Python 3.6.

  1. Главная ссылка к новости (http://morepypy.blogspot.ru/20...)
  2. OpenNews: Релиз PyPy 5.10, реализации Python, написанной на языке Python
  3. OpenNews: Релиз PyPy 5.9, реализации Python, написанной на языке Python
  4. OpenNews: Выпуск Cython 0.27, компилятора для языка Python
  5. OpenNews: Instagram открыл код MonkeyType, системы аннотации типов для Python
  6. OpenNews: Проект Python представил новый каталог пакетов PyPI и пакетный менеджер Pip 10
Лицензия: CC-BY
Тип: Программы
Ключевые слова: pypy, python
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (44) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 00:14, 27/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    [code]
    test = 0.7
    while test <= 2.0:
      print "%.1f" % (test)
      test += 0.1
    [/code]

    Результат: выводит числа от 0.7 до 1.9

    Почему не выводит 2.0?
    Если поменять на 3.0, то тоже самое — последнее выводит 2.9.
    Но если поставить начало цикла на 1.7, то 2.0 появляется.
    Что магического в цифрах 2 и 3 для питона?

     
     
  • 2.3, Виктор (??), 00:30, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для того, чтобы понять, почему так случается, вам нужно посмотреть это видео: https://youtu.be/WlaAAdz4pjM?t=84
     
     
  • 3.6, Аноним (-), 00:48, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо, интересно.
     
  • 3.14, Аноним (-), 07:51, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А в видео есть ответ на вопрос, как безопасно сравнивать 2 флоата?
     
     
  • 4.16, Аноним (-), 09:17, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    if(abs(a-b) <= 0.00001) {...}
     
     
  • 5.29, dasrfatwet (?), 17:06, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • –8 +/
    боже мой теперь понятно почему питон никому не нужен кроме извращенцев
     
     
  • 6.34, Аноним (-), 00:59, 28/04/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    О, смотрите все, вот code monkey считает себя умнее Дональда Кнута.
     
  • 6.35, Аноним84701 (ok), 01:06, 28/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > боже мой теперь понятно почему питон никому не нужен кроме извращенцев

    Вы не поверите, но …
    [CODE]
    % cat testfloat.c && gcc -Wall -Wextra -Wpedantic testfloat.c -o float && ./float
    #include <stdio.h>

    int main(void)
    {
        double test = 0.7;
        while (test <= 2.0) {
            printf ("%.1f | %.20f\n", test, test);
            test += 0.1;
        }
        return 0;
    }
    0.7 | 0.69999999999999995559
    0.8 | 0.79999999999999993339
    0.9 | 0.89999999999999991118
    1.0 | 0.99999999999999988898
    1.1 | 1.09999999999999986677
    1.2 | 1.19999999999999995559
    1.3 | 1.30000000000000004441
    1.4 | 1.40000000000000013323
    1.5 | 1.50000000000000022204
    1.6 | 1.60000000000000031086
    1.7 | 1.70000000000000039968
    1.8 | 1.80000000000000048850
    1.9 | 1.90000000000000057732
    [CODE]

     
  • 4.32, Аноним (-), 22:01, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    if str(f1)=str(f2):
        pass
     
     
  • 5.42, ram_scan (?), 19:05, 28/04/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И в соседней процедуре сортировку пузырьком. Производительности то девать некуда.
     
  • 2.4, alexpat (?), 00:37, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Здесь не в питоне дело, а в том, как хранятся числа с плавающей точкой.
     
     
  • 3.23, myhand (ok), 13:16, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ыгы.  О сколько нам открытий чудных готовит IEEE 754.
     
  • 2.5, Анончик999999 (?), 00:40, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще, не хорошо сравнивать числа с плавающей точкой. Но вот while test <= 2.0 + sys.float_info.epsilon тоже не срабатывает, хотя должно бы.
     
     
  • 3.8, какойто другой аноним (?), 01:39, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > хотя должно бы

    отчего бы это?
    есть несколько аспектов:

    во-первых, epsilon - это такое минимальное положительное число, что 1.0 + epsilon != 1.0
    т.е. совершенно законно, что 2.0 + epsilon == 2.0

    во-вторых, следовательно, оптимисты должны писать не 2.0 + epsilon, а 2.0*(1+epsilon)

    в третьих, цепочка операций может накапливать погрешность неожиданным для неопытного человека образом. Конкретно в данном случае абсолютная погрешность суммы равна 2*epsilon, но при суммировании произвольной последовательности чисел довольно просто найти поучительные примеры -

    >>> 1./3 + 2./3 - 1

    0.0
    >>> 1./3 -1 + 2./3

    -1.1102230246251565e-16
    >>> 2./3 -1 + 1./3

    -5.551115123125783e-17

    :)

     
     
  • 4.9, Анонимчик (?), 02:51, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то интересно, как происходит приравнивание float-массивов в NumPy?
     
  • 3.26, Аноним (-), 15:43, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Вообще, не хорошо сравнивать числа с плавающей точкой. Но вот while test
    > <= 2.0 + sys.float_info.epsilon тоже не срабатывает, хотя должно бы.

    Ты на оборудовании с точностью 0.1 мм задаешь величину 2.15 мм.

     
  • 2.7, Анончик999999 (?), 00:59, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну да, приходит наращивание за счёт постоянного прибавления одной десятой. 2.0000000000000004 > 2 + sys.float_info.epsilon. Лучше в циклах перевести в целые числа или в дроби:
    from fractions import Fraction
    test = Fraction(7, 10)
    while test <= 2:
      print "%.1f" % (test)
      test += Fraction(1, 10)
     
     
  • 3.10, Анонимчик (?), 02:57, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Можно заменить на тип Decimal.
    from decimal import Decimal
    test = 0.7  # известно.
    test = Decimal(str(test))
    dt = Decimal('0.1')
    while text <= 2:
        print('{:.1f}'.format(test)
        test += dt
     
     
  • 4.11, Анонимчик (?), 02:58, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    ) в конце print
     
  • 2.17, Crazy Alex (ok), 10:02, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Вот примерно поэтому надо хотя бы начинать с си плюсов или ещё чего, что даёт понимание того, как оно там внутри работает.
     
     
  • 3.19, userd (ok), 12:39, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для понимания как оно работает лучше начинать с ввода программы через инженерный пульт.
    Очень просто и практично - набрал переключателями адрес, значение байта - нажал кнопку "записать",
    и переходи к следующему байту. Когда введёшь программу и данные, набираешь адрес и кнопку "выполнить" :)

    А так-то и python ничего не скрывает. В частности, если мы говорим про числа с плавающей точкой -
    [code]
    >>> sys.float_info.epsilon.hex()

    '0x1.0000000000000p-52'

    >>> (1.0+sys.float_info.epsilon).hex()

    '0x1.0000000000001p+0'

    >>> sum( [ 0.7 ] + [ 0.1 ]*13 ).hex()

    '0x1.0000000000001p+1'

    >>> float.fromhex('0x0.0000000000001p+0')

    2.220446049250313e-16
    [/code]
    А ещё у нас есть struct и ctypes :)

     
     
  • 4.24, Crazy Alex (ok), 13:43, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Скрывает. просто не наглухо. Разница в том, что на сях нельзя писать, не понимая основ, а на питоне - часто можно. И то, что на практике часто даёт удобство (а потом лупит граблями в неподходящий момент), в обучении замазывает пробелы в знаниях.
     
     
  • 5.36, Аноним (-), 08:33, 28/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Не надо учить основы на питоне.... Питон - это язык для тех, кому не надо программировать вообще. То есть номинально надо что-то знать, потому что все вокруг программируют, но рельно - не нужно....

    Для понимания основ годится что-нибудь обычное высокоуровневое, например Паскаль. Проще, чем C, не перегружен, легко понять как работают алгоритмы. И ничего страшного, что реальные программы на нём уже почти не пишут. Книги Кнута - тоже, не на практически используемом языке написаны.

     
  • 5.39, num (?), 14:56, 28/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >Скрывает. просто не наглухо. Разница в том, что на сях нельзя писать, не понимая основ, а на питоне - часто можно.

    Вот казалось бы так. Но сишники раз за разом умудряются доказывать обратное!

     
     
  • 6.40, Аноним (-), 16:29, 28/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Гоните таких сишников учить теорию
     
  • 2.25, Аноним (-), 15:41, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Некроверсия питона у кого-то потому-что.
     
  • 2.44, ыы (?), 22:26, 28/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что 0.1 это в действительности 0.10000000000000001000
    И после того как напечатано 1,9 и прибавляется 0.10000000000000001000 - получается сумма больше чем 2.0
     

  • 1.2, corvuscor (ok), 00:22, 27/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересная штука, но matplotlib, видимо, пока все-таки не поддерживается.
    Ну, подождем-с.
     
     
  • 2.21, myhand (ok), 13:13, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Интересная штука, но matplotlib, видимо, пока все-таки не поддерживается.

    Вроде что-то шевелится...

    tar xjvf pypy3-v6.0.0-linux64.tar.bz2
    mkdir venv
    pypy3-v6.0.0-linux64/bin/pypy3 -m venv --clear venv/dev-pypy3
    pypy3-v6.0.0-linux64/bin/pypy3 -m venv --system-site-packages venv/dev-pypy3
    . ~/venv/dev-pypy3/bin/activate
    pip install --pre diofant[plot,interactive,develop,docs]

    matplotlib устанавливается корректно, правда долго - колес не завели.

    И что-то строит:
    $ python
    Python 3.5.3 (fdd60ed87e94, Apr 24 2018, 06:10:04)
    [PyPy 6.0.0 with GCC 6.2.0 20160901] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>> from diofant import plot, sin
    >>>> from diofant.abc import x
    >>>> plot(sin(x), (x, 0, 3))

    [...]
    Plot object containing:
    [0]: cartesian line: sin(x) for x over (0.0, 3.0)

     

  • 1.15, Аноним (-), 09:10, 27/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Когда он уже сможет заменить cpython?
     
     
  • 2.22, myhand (ok), 13:13, 27/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Телепатический модуль так и не завели.
     

  • 1.31, Диносуслик (?), 19:12, 27/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А не хотят они PyPyPy написать на PyPy ) В соседней новости нейросеть уже пишет код. Вот и тут надо.
     
  • 1.38, myhand (ok), 12:34, 28/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ай-яй-яй, г-да модераторы.  Ведь совсем не по теме новости что в Российской Федерации релиз PyPy можно скачать только через прокси?

    Что-ж вы публикуете новость о выходе противозаконного ПО?

     
     
  • 2.41, userd (ok), 18:14, 28/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    я не модератор, но могу сказать -

    1) В PyPy ничего противозаконного нет.
    2) У меня в СПб всё качается. Без всяких прокси, хочешь firefox-ом - хочешь wget-ом,
    3) Если у Вас есть проблема, и Вы хотите её решить, то клоунада на opennet-е не поможет.

    Что поможет в решении проблемы мне не ведомо.
    Вероятно, ваш провайдер смотрит на мир оловянными глазами...

     
     
  • 3.45, Аноним (-), 23:05, 28/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> 2) У меня в СПб всё качается. Без всяких прокси, хочешь firefox-ом - хочешь wget-ом,

    На самом деле, могу подтвердить, что и в моём случае amazonaws.com не отвечает (bbuseruploads.s3.amazonaws.com, именно туда идёт перенаправление при скачивании). Этот домен проверен уже двумя провайдерами. Но в списке заблокированных через host-tracker.com не определяется. Длится это с момент блокировки Телеграм

    И вряд ли он вообще каким-либо образом сможет повлиять на решение проблемы.

     
     
  • 4.46, Аноним (-), 23:14, 28/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Поправка, поддомены Амазона заблокированы, а значит, если IP совпадут с другими поддоменами, то тоже, вероятно, окажутся заблокированными. Увы:
    https://www.host-tracker.com/InstantCheck/3/8749f05b-204b-e811-a57a-0003ff7351

    Это многое объясняет.

     
  • 3.51, myhand (ok), 17:56, 29/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну что-ж, ответ опять удалили.

    Интересно, за что?

     
     
  • 4.52, Аноним (-), 18:20, 29/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну что-ж, ответ опять удалили.
    > Интересно, за что?

    https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi?az=list&forum=vsluhfor
    > УДАЛЕНО.WARNBOT, Реакция: bot info, Санкционировано: mc, Пояснение: оскорбление, Время: Sun Apr 29 19:07:57 2018

    Индикатор нарушения: "модер я не модератор, но могу сказать - "


     
     
  • 5.53, myhand (ok), 18:54, 29/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Таки за что?  "Оскорбиться" можно на что угодно, при желании.
     
     
  • 6.54, Аноним (-), 19:23, 29/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Таки за что?  "Оскорбиться" можно на что угодно, при желании.

    "дурачок"
    Ваш КО.


     
     
  • 7.55, myhand (ok), 19:34, 29/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    И почему это оскорбительно?  "Клоунада на opennete" почему-то г-ну модератору не показалась оскорблением.

    Кто первым оскорбился - тот и прав?

     

  • 1.43, Андрей (??), 20:20, 28/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А что, pypy популярнее cython? В Debian всё ещё cython 0.26.1 от 29 августа 2017. А pypy только вышел, и на следующий день уже был в Debian.
     
     
  • 2.48, myhand (ok), 13:41, 29/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В Debian как не было pypy3, так и нет.
     
     
  • 3.50, Андрей (??), 16:07, 29/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В пакете cython идут оба. А в pypy, точно, только 2-ой.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру