Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Новые (и не очень) библиотеки и фреймворки, о которых вы могли не знать

Новые (и не очень) библиотеки и фреймворки, о которых вы могли не знать

Выступление для внутреннего митапа. Здесь я обзореваю разные новые интересные фреймворки и библиотеки. Такие как ruff или robyn

Denis Anikin

May 22, 2022
Tweet

More Decks by Denis Anikin

Other Decks in Programming

Transcript

  1. Денис Аникин
    https://xfenix.ru/
    Новые (и не очень)
    библиотеки и
    фреймворки, о которых
    вы могли не знать

    View full-size slide

  2. Robyn
    4
    ⭐ 1500 github stars
    — Написан на RUST

    View full-size slide

  3. Robyn
    7
    ⭐ 1.5k github stars
    — Написан на RUST
    — Мультипоточный рантайм на rust

    View full-size slide

  4. Robyn
    8
    ⭐ 1.5k github stars
    — Написан на RUST
    — Мультипоточный рантайм на rust
    — Скейлинг на множество ядер

    View full-size slide

  5. Robyn
    9
    ⭐ 1.5k github stars
    — Написан на RUST
    — Мультипоточный рантайм на rust
    — Скейлинг на множество ядер
    — Hot reload, websockets, etc.

    View full-size slide

  6. 10
    Код!
    from robyn import Robyn
    app = Robyn(__file__)
    @app.get("/")
    async def h(request):
    return "Hello, world!"
    app.start(port=5000)

    View full-size slide

  7. Бенчмарки RPS
    12
    https://sansyrox.github.io/robyn/#/comparison
    Django: 1x
    FastAPI: 3.27x
    Robyn: 7.37x,
    8.66x

    View full-size slide

  8. Ruff
    14
    ⭐ 2300 github stars
    — Линтер, который написан на RUST

    View full-size slide

  9. Ruff
    17
    ⭐ 2300 github stars
    — Линтер, который написан на RUST
    — Поддерживает pyproject.toml

    View full-size slide

  10. Ruff
    18
    ⭐ 2300 github stars
    — Линтер, который написан на RUST
    — Поддерживает pyproject.toml
    — Поддержка --watch

    View full-size slide

  11. Ruff
    19
    ⭐ 2300 github stars
    — Линтер, который написан на RUST
    — Поддерживает pyproject.toml
    — Поддержка --watch
    — Заменяет flake8 + pydocstyle + pyupgrade + autoflake

    View full-size slide

  12. Frozenlist
    21
    ⭐ 47 github stars J
    Динамически переключаемый list, который можно «фризить»

    View full-size slide

  13. Frozenlist
    23
    ⭐ 47 github stars J

    View full-size slide

  14. Taichi
    25
    ⭐ 4300 github stars
    Это язык (?) для параллельного выполнения

    View full-size slide

  15. Taichi
    26
    ⭐ 4300 github stars
    import taichi as ti
    ti.init()
    @ti.func
    def is_prime(n: int):
    result = True
    for k in range(2, int(n ** 0.5) + 1):
    if n % k == 0:
    result = False
    break
    return result
    @ti.kernel
    def count_primes(n: int) -> int:
    count = 0
    for k in range(2, n):
    if is_prime(k):
    count += 1
    return count
    print(count_primes(1000000))

    View full-size slide

  16. 27
    Бенчмарки
    До:
    ---
    78498
    real 0m2.235s
    user 0m2.235s
    sys 0m0.000s

    View full-size slide

  17. 28
    Бенчмарки
    До:
    ---
    78498
    real 0m2.235s
    user 0m2.235s
    sys 0m0.000s
    После:
    ---
    78498
    real 0m0.363s
    user 0m0.546s
    sys 0m0.179s

    View full-size slide

  18. PyOxidizer
    31
    ⭐ 4300 github stars
    — Позволяет паковать и распостранять python пакеты…

    View full-size slide

  19. PyOxidizer
    34
    ⭐ 4300 github stars
    — Позволяет паковать и распостранять python пакеты… в виде
    одного исполняемого файла, со всеми зависимостями, которые
    статически слинкованы

    View full-size slide

  20. PyOxidizer
    35
    ⭐ 4300 github stars
    — Позволяет паковать и распостранять python пакеты… в виде
    одного исполняемого файла, со всеми зависимостями, которые
    статически слинкованы
    — Объединение скотчем кучи утилит на расте, которые
    позволяют все это делать

    View full-size slide

  21. PyOxidizer
    36
    ⭐ 4300 github stars
    — Позволяет паковать и распостранять python пакеты… в виде
    одного исполняемого файла, со всеми зависимостями, которые
    статически слинкованы
    — Объединение скотчем кучи утилит на расте, которые
    позволяют все это делать
    — Довольно запутанная документация с кучей нюансов
    (например, необходимо будет познакомиться с языком Starlark)

    View full-size slide

  22. Boltons
    38
    ⭐ 60 github stars
    Позволяет работать с k8s манифестами

    View full-size slide

  23. Примеры
    39
    from hikaru.model.rel_1_16 import Pod, PodSpec, Container, ObjectMeta
    from hikaru import get_yaml
    x = Pod(apiVersion='v1', kind='Pod',
    metadata=ObjectMeta(name='hello-kiamol-3'),
    spec=PodSpec(
    containers=[Container(name='web', image='kiamol/ch02-hello-kiamol') ]
    )
    )
    print(get_yaml(x))

    View full-size slide

  24. Примеры
    40
    from hikaru.model.rel_1_16 import Pod, PodSpec, Container, ObjectMeta
    from hikaru import get_yaml
    x = Pod(apiVersion='v1', kind='Pod',
    metadata=ObjectMeta(name='hello-kiamol-3'),
    spec=PodSpec(
    containers=[Container(name='web', image='kiamol/ch02-hello-kiamol') ]
    )
    )
    print(get_yaml(x))
    ---
    apiVersion: v1
    kind: Pod
    metadata:
    name: hello-kiamol-3
    spec:
    containers:
    - name: web
    image: kiamol/ch02-hello-kiamol

    View full-size slide

  25. Есть же helm!

    View full-size slide

  26. 43
    Представьте кейс:
    Вы хотите в k8s кластере динамически изнутри создавать
    новые pod’ы или даже целые service’ы

    View full-size slide

  27. Boltons
    45
    ⭐ 5900 github stars
    — 171 дополнительных функций

    View full-size slide

  28. Boltons
    46
    ⭐ 5900 github stars
    — 171 дополнительных функций
    — Атомарные сохранения файлов, LRU, LRI кеши, дополнения
    к functools, itertools, некоторые новые структуры данных и много
    чего ещё

    View full-size slide

  29. Grumpy, pycom

    View full-size slide

  30. Grumpy, pycom
    48
    — Pycom — компилирует питон код через с-с++

    View full-size slide

  31. Grumpy, pycom
    49
    — Pycom — компилирует питон код через с-с++
    — Grumpy — транспилирует питон код в GO

    View full-size slide

  32. Grumpy, pycom
    50
    — Pycom — компилирует питон код через с-с++
    — Grumpy — транспилирует питон код в GO
    — Оба так себе работают J

    View full-size slide

  33. /
    Денис Аникин
    https://xfenix.ru/
    Спасибо!

    View full-size slide