home.social

#указатели — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #указатели, aggregated by home.social.

  1. [Перевод] WebAssembly как платформа расширений для Python: ускорение, встраивание и опасные ловушки API

    WebAssembly можно использовать как способ расширять Python без нативной сборки под каждую платформу: упаковать Wasm-модуль внутрь библиотеки, запускать его через wasmtime-py и ускорять участки, где чистый Python уже не справляется. Но за удобной схемой быстро проявляются неочевидные детали: store , линейная память, знаковые указатели, ручное копирование данных и риск записать их совсем не туда. В статье разберёмся, где Wasm действительно полезен для Python и почему работа с таким API требует особой аккуратности. Читать разбор

    habr.com/ru/companies/otus/art

    #WebAssembly #Python #WASM #wasmtimepy #расширения_Python #линейная_память #указатели #API #производительность #встраиваемые_модули

  2. [Перевод] WebAssembly как платформа расширений для Python: ускорение, встраивание и опасные ловушки API

    WebAssembly можно использовать как способ расширять Python без нативной сборки под каждую платформу: упаковать Wasm-модуль внутрь библиотеки, запускать его через wasmtime-py и ускорять участки, где чистый Python уже не справляется. Но за удобной схемой быстро проявляются неочевидные детали: store , линейная память, знаковые указатели, ручное копирование данных и риск записать их совсем не туда. В статье разберёмся, где Wasm действительно полезен для Python и почему работа с таким API требует особой аккуратности. Читать разбор

    habr.com/ru/companies/otus/art

    #WebAssembly #Python #WASM #wasmtimepy #расширения_Python #линейная_память #указатели #API #производительность #встраиваемые_модули

  3. [Перевод] WebAssembly как платформа расширений для Python: ускорение, встраивание и опасные ловушки API

    WebAssembly можно использовать как способ расширять Python без нативной сборки под каждую платформу: упаковать Wasm-модуль внутрь библиотеки, запускать его через wasmtime-py и ускорять участки, где чистый Python уже не справляется. Но за удобной схемой быстро проявляются неочевидные детали: store , линейная память, знаковые указатели, ручное копирование данных и риск записать их совсем не туда. В статье разберёмся, где Wasm действительно полезен для Python и почему работа с таким API требует особой аккуратности. Читать разбор

    habr.com/ru/companies/otus/art

    #WebAssembly #Python #WASM #wasmtimepy #расширения_Python #линейная_память #указатели #API #производительность #встраиваемые_модули

  4. [Перевод] WebAssembly как платформа расширений для Python: ускорение, встраивание и опасные ловушки API

    WebAssembly можно использовать как способ расширять Python без нативной сборки под каждую платформу: упаковать Wasm-модуль внутрь библиотеки, запускать его через wasmtime-py и ускорять участки, где чистый Python уже не справляется. Но за удобной схемой быстро проявляются неочевидные детали: store , линейная память, знаковые указатели, ручное копирование данных и риск записать их совсем не туда. В статье разберёмся, где Wasm действительно полезен для Python и почему работа с таким API требует особой аккуратности. Читать разбор

    habr.com/ru/companies/otus/art

    #WebAssembly #Python #WASM #wasmtimepy #расширения_Python #линейная_память #указатели #API #производительность #встраиваемые_модули

  5. Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти

    Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe. Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки. Разберём, как писать FFI-обёртки, которые не подтекают и не падают.

    habr.com/ru/companies/otus/art

    #rust #FFI #безопасные_обертки #указатели #управление_памятью #коллбэки

  6. Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти

    Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe. Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки. Разберём, как писать FFI-обёртки, которые не подтекают и не падают.

    habr.com/ru/companies/otus/art

    #rust #FFI #безопасные_обертки #указатели #управление_памятью #коллбэки

  7. Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти

    Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe. Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки. Разберём, как писать FFI-обёртки, которые не подтекают и не падают.

    habr.com/ru/companies/otus/art

    #rust #FFI #безопасные_обертки #указатели #управление_памятью #коллбэки

  8. Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти

    Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe. Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки. Разберём, как писать FFI-обёртки, которые не подтекают и не падают.

    habr.com/ru/companies/otus/art

    #rust #FFI #безопасные_обертки #указатели #управление_памятью #коллбэки

  9. restrict в C: оптимизация на честном слове

    Привет, Хабр! Сегодня поговорим про один из самых незаметных, но любопытных моментов языка C. Если вы пишете на C, скорее всего вы никогда не использовали ключевое слово restrict . А зря — этот квалификатор указателя может дать вашему коду неплохой прирост производительности. Правда, для этого придётся дать компилятору честное слово насчёт своих указателей.

    habr.com/ru/companies/otus/art

    #C #указатели #память #aliasing #оптимизация_кода #lowlevel_программирование #компилятор

  10. restrict в C: оптимизация на честном слове

    Привет, Хабр! Сегодня поговорим про один из самых незаметных, но любопытных моментов языка C. Если вы пишете на C, скорее всего вы никогда не использовали ключевое слово restrict . А зря — этот квалификатор указателя может дать вашему коду неплохой прирост производительности. Правда, для этого придётся дать компилятору честное слово насчёт своих указателей.

    habr.com/ru/companies/otus/art

    #C #указатели #память #aliasing #оптимизация_кода #lowlevel_программирование #компилятор

  11. restrict в C: оптимизация на честном слове

    Привет, Хабр! Сегодня поговорим про один из самых незаметных, но любопытных моментов языка C. Если вы пишете на C, скорее всего вы никогда не использовали ключевое слово restrict . А зря — этот квалификатор указателя может дать вашему коду неплохой прирост производительности. Правда, для этого придётся дать компилятору честное слово насчёт своих указателей.

    habr.com/ru/companies/otus/art

    #C #указатели #память #aliasing #оптимизация_кода #lowlevel_программирование #компилятор

  12. restrict в C: оптимизация на честном слове

    Привет, Хабр! Сегодня поговорим про один из самых незаметных, но любопытных моментов языка C. Если вы пишете на C, скорее всего вы никогда не использовали ключевое слово restrict . А зря — этот квалификатор указателя может дать вашему коду неплохой прирост производительности. Правда, для этого придётся дать компилятору честное слово насчёт своих указателей.

    habr.com/ru/companies/otus/art

    #C #указатели #память #aliasing #оптимизация_кода #lowlevel_программирование #компилятор

  13. Гайд на полиморфизм. Rust

    В прошлых статьях мы разобрали теорию: что такое полиморфизм и какие существуют способы его реализации. Настало время посмотреть, как это реализуется на практике. В качестве примера был выбран Rust — язык с богатой функциональностью, с одной стороны, и простой, прозрачной реализацией — с другой.

    habr.com/ru/articles/925576/

    #rust #полиморфизм #перегрузка_операторов #vmt #перегрузка #указатели #виртуальные_функции #assambler #under_the_hood #ассемблер

  14. Гайд на полиморфизм. Rust

    В прошлых статьях мы разобрали теорию: что такое полиморфизм и какие существуют способы его реализации. Настало время посмотреть, как это реализуется на практике. В качестве примера был выбран Rust — язык с богатой функциональностью, с одной стороны, и простой, прозрачной реализацией — с другой.

    habr.com/ru/articles/925576/

    #rust #полиморфизм #перегрузка_операторов #vmt #перегрузка #указатели #виртуальные_функции #assambler #under_the_hood #ассемблер

  15. Гайд на полиморфизм. Rust

    В прошлых статьях мы разобрали теорию: что такое полиморфизм и какие существуют способы его реализации. Настало время посмотреть, как это реализуется на практике. В качестве примера был выбран Rust — язык с богатой функциональностью, с одной стороны, и простой, прозрачной реализацией — с другой.

    habr.com/ru/articles/925576/

    #rust #полиморфизм #перегрузка_операторов #vmt #перегрузка #указатели #виртуальные_функции #assambler #under_the_hood #ассемблер

  16. Гайд на полиморфизм. Rust

    В прошлых статьях мы разобрали теорию: что такое полиморфизм и какие существуют способы его реализации. Настало время посмотреть, как это реализуется на практике. В качестве примера был выбран Rust — язык с богатой функциональностью, с одной стороны, и простой, прозрачной реализацией — с другой.

    habr.com/ru/articles/925576/

    #rust #полиморфизм #перегрузка_операторов #vmt #перегрузка #указатели #виртуальные_функции #assambler #under_the_hood #ассемблер

  17. std::launder: зачем и когда нужен

    Привет, Хабр! В этой статье разберём мутный, но крайне важный инструмент ‒ std::launder . Мы поглядим, зачем его протащили в C++17 и что компилятор делает, когда видит launder.

    habr.com/ru/companies/otus/art

    #c++ #C++17 #неопределённое_поведение #lifetime_объекта #оптимизации_компилятора #указатели

  18. std::launder: зачем и когда нужен

    Привет, Хабр! В этой статье разберём мутный, но крайне важный инструмент ‒ std::launder . Мы поглядим, зачем его протащили в C++17 и что компилятор делает, когда видит launder.

    habr.com/ru/companies/otus/art

    #c++ #C++17 #неопределённое_поведение #lifetime_объекта #оптимизации_компилятора #указатели

  19. std::launder: зачем и когда нужен

    Привет, Хабр! В этой статье разберём мутный, но крайне важный инструмент ‒ std::launder . Мы поглядим, зачем его протащили в C++17 и что компилятор делает, когда видит launder.

    habr.com/ru/companies/otus/art

    #c++ #C++17 #неопределённое_поведение #lifetime_объекта #оптимизации_компилятора #указатели

  20. std::launder: зачем и когда нужен

    Привет, Хабр! В этой статье разберём мутный, но крайне важный инструмент ‒ std::launder . Мы поглядим, зачем его протащили в C++17 и что компилятор делает, когда видит launder.

    habr.com/ru/companies/otus/art

    #c++ #C++17 #неопределённое_поведение #lifetime_объекта #оптимизации_компилятора #указатели

  21. Golang: когда make, когда new

    Привет, Хабр! В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new , чем они отличаются, как они работают и когда выбирать каждый из них.

    habr.com/ru/companies/otus/art

    #golang #аллокация_памяти #указатели #структурные_типы #genericкод #управление_памятью

  22. Golang: когда make, когда new

    Привет, Хабр! В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new , чем они отличаются, как они работают и когда выбирать каждый из них.

    habr.com/ru/companies/otus/art

    #golang #аллокация_памяти #указатели #структурные_типы #genericкод #управление_памятью

  23. Golang: когда make, когда new

    Привет, Хабр! В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new , чем они отличаются, как они работают и когда выбирать каждый из них.

    habr.com/ru/companies/otus/art

    #golang #аллокация_памяти #указатели #структурные_типы #genericкод #управление_памятью

  24. Golang: когда make, когда new

    Привет, Хабр! В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new , чем они отличаются, как они работают и когда выбирать каждый из них.

    habr.com/ru/companies/otus/art

    #golang #аллокация_памяти #указатели #структурные_типы #genericкод #управление_памятью

  25. Так ли плох Go в глазах C++ разработчика: пишем микросервис и учимся на ошибках

    Миллионы пользователей ежедневно заходят на Яндекс Маркет. И одна из ключевых задач сервиса — показывать им точные сроки доставки на поиске и в корзине. При пиковых нагрузках это около 40 тысяч запросов в секунду. Как обеспечить столь быструю и точную обработку данных о доставке? Привет, Хабр! Меня зовут Никита Деревянко. Я руковожу разработкой логистической платформы Яндекс Маркета. Люблю играть в шахматы, бильярд и программировать. Изучаю японский язык, чтобы тренировать мозг и смотреть аниме в оригинале. Расскажу о том, как построить логистический runtime на Go, не являясь Golang-разработчиком. Рассмотрим, как справиться с большим объёмом данных и какие преимущества может (или не может) предложить Golang для масштабной задачи.

    habr.com/ru/companies/yandex/a

    #golang #высокая_нагрузка #концепции #подходы #указатели #аллокация #grpc #syncpool #слайсы #профилирование

  26. Так ли плох Go в глазах C++ разработчика: пишем микросервис и учимся на ошибках

    Миллионы пользователей ежедневно заходят на Яндекс Маркет. И одна из ключевых задач сервиса — показывать им точные сроки доставки на поиске и в корзине. При пиковых нагрузках это около 40 тысяч запросов в секунду. Как обеспечить столь быструю и точную обработку данных о доставке? Привет, Хабр! Меня зовут Никита Деревянко. Я руковожу разработкой логистической платформы Яндекс Маркета. Люблю играть в шахматы, бильярд и программировать. Изучаю японский язык, чтобы тренировать мозг и смотреть аниме в оригинале. Расскажу о том, как построить логистический runtime на Go, не являясь Golang-разработчиком. Рассмотрим, как справиться с большим объёмом данных и какие преимущества может (или не может) предложить Golang для масштабной задачи.

    habr.com/ru/companies/yandex/a

    #golang #высокая_нагрузка #концепции #подходы #указатели #аллокация #grpc #syncpool #слайсы #профилирование

  27. Так ли плох Go в глазах C++ разработчика: пишем микросервис и учимся на ошибках

    Миллионы пользователей ежедневно заходят на Яндекс Маркет. И одна из ключевых задач сервиса — показывать им точные сроки доставки на поиске и в корзине. При пиковых нагрузках это около 40 тысяч запросов в секунду. Как обеспечить столь быструю и точную обработку данных о доставке? Привет, Хабр! Меня зовут Никита Деревянко. Я руковожу разработкой логистической платформы Яндекс Маркета. Люблю играть в шахматы, бильярд и программировать. Изучаю японский язык, чтобы тренировать мозг и смотреть аниме в оригинале. Расскажу о том, как построить логистический runtime на Go, не являясь Golang-разработчиком. Рассмотрим, как справиться с большим объёмом данных и какие преимущества может (или не может) предложить Golang для масштабной задачи.

    habr.com/ru/companies/yandex/a

    #golang #высокая_нагрузка #концепции #подходы #указатели #аллокация #grpc #syncpool #слайсы #профилирование

  28. Так ли плох Go в глазах C++ разработчика: пишем микросервис и учимся на ошибках

    Миллионы пользователей ежедневно заходят на Яндекс Маркет. И одна из ключевых задач сервиса — показывать им точные сроки доставки на поиске и в корзине. При пиковых нагрузках это около 40 тысяч запросов в секунду. Как обеспечить столь быструю и точную обработку данных о доставке? Привет, Хабр! Меня зовут Никита Деревянко. Я руковожу разработкой логистической платформы Яндекс Маркета. Люблю играть в шахматы, бильярд и программировать. Изучаю японский язык, чтобы тренировать мозг и смотреть аниме в оригинале. Расскажу о том, как построить логистический runtime на Go, не являясь Golang-разработчиком. Рассмотрим, как справиться с большим объёмом данных и какие преимущества может (или не может) предложить Golang для масштабной задачи.

    habr.com/ru/companies/yandex/a

    #golang #высокая_нагрузка #концепции #подходы #указатели #аллокация #grpc #syncpool #слайсы #профилирование

  29. Переосмысление концепции подсчета ссылок и полный отказ от сборщика мусора

    Фундаментальной (по моему мнению) проблемой множества языков программирования является неявное использование ссылок (ссылочных переменных). И проблема не в том, что с помощью ссылок изменяются какие-то общие данные, а в том, что часто это делается неявным образом , из-за чего программист должен всегда помнить об особенностях таких переменных. Еще одной проблемой (или следствие предыдущей) является многопоточное и/или асинхронное выполнение программы, когда к одной и той же области данных может быть получен доступ из разных потоков приложения, что в купе с неявным доступом по ссылкам еще больше усугубляет ситуацию. А как бы хотелось отдать эти проблемы на откуп компилятору! Чтобы компьютер сам автоматически проверял корректность доступа по ссылкам, в том числе и из разных потоков и чтобы все это делалось во время компиляции приложения без накладных расходов в рантайме! И если такое будет возможно, тогда постепенно уйдет в прошлое целая эпоха сборщиков мусора с их неожиданными зависаниями программ в произвольные моменты времени и разными мудреными алгоритмами поиска мертвых указателей и циклических ссылок!

    habr.com/ru/articles/853646/

    #c++ #указатели #ссылки #сборщик_мусора

  30. Переосмысление концепции подсчета ссылок и полный отказ от сборщика мусора

    Фундаментальной (по моему мнению) проблемой множества языков программирования является неявное использование ссылок (ссылочных переменных). И проблема не в том, что с помощью ссылок изменяются какие-то общие данные, а в том, что часто это делается неявным образом , из-за чего программист должен всегда помнить об особенностях таких переменных. Еще одной проблемой (или следствие предыдущей) является многопоточное и/или асинхронное выполнение программы, когда к одной и той же области данных может быть получен доступ из разных потоков приложения, что в купе с неявным доступом по ссылкам еще больше усугубляет ситуацию. А как бы хотелось отдать эти проблемы на откуп компилятору! Чтобы компьютер сам автоматически проверял корректность доступа по ссылкам, в том числе и из разных потоков и чтобы все это делалось во время компиляции приложения без накладных расходов в рантайме! И если такое будет возможно, тогда постепенно уйдет в прошлое целая эпоха сборщиков мусора с их неожиданными зависаниями программ в произвольные моменты времени и разными мудреными алгоритмами поиска мертвых указателей и циклических ссылок!

    habr.com/ru/articles/853646/

    #c++ #указатели #ссылки #сборщик_мусора

  31. Переосмысление концепции подсчета ссылок и полный отказ от сборщика мусора

    Фундаментальной (по моему мнению) проблемой множества языков программирования является неявное использование ссылок (ссылочных переменных). И проблема не в том, что с помощью ссылок изменяются какие-то общие данные, а в том, что часто это делается неявным образом , из-за чего программист должен всегда помнить об особенностях таких переменных. Еще одной проблемой (или следствие предыдущей) является многопоточное и/или асинхронное выполнение программы, когда к одной и той же области данных может быть получен доступ из разных потоков приложения, что в купе с неявным доступом по ссылкам еще больше усугубляет ситуацию. А как бы хотелось отдать эти проблемы на откуп компилятору! Чтобы компьютер сам автоматически проверял корректность доступа по ссылкам, в том числе и из разных потоков и чтобы все это делалось во время компиляции приложения без накладных расходов в рантайме! И если такое будет возможно, тогда постепенно уйдет в прошлое целая эпоха сборщиков мусора с их неожиданными зависаниями программ в произвольные моменты времени и разными мудреными алгоритмами поиска мертвых указателей и циклических ссылок!

    habr.com/ru/articles/853646/

    #c++ #указатели #ссылки #сборщик_мусора

  32. Переосмысление концепции подсчета ссылок и полный отказ от сборщика мусора

    Фундаментальной (по моему мнению) проблемой множества языков программирования является неявное использование ссылок (ссылочных переменных). И проблема не в том, что с помощью ссылок изменяются какие-то общие данные, а в том, что часто это делается неявным образом , из-за чего программист должен всегда помнить об особенностях таких переменных. Еще одной проблемой (или следствие предыдущей) является многопоточное и/или асинхронное выполнение программы, когда к одной и той же области данных может быть получен доступ из разных потоков приложения, что в купе с неявным доступом по ссылкам еще больше усугубляет ситуацию. А как бы хотелось отдать эти проблемы на откуп компилятору! Чтобы компьютер сам автоматически проверял корректность доступа по ссылкам, в том числе и из разных потоков и чтобы все это делалось во время компиляции приложения без накладных расходов в рантайме! И если такое будет возможно, тогда постепенно уйдет в прошлое целая эпоха сборщиков мусора с их неожиданными зависаниями программ в произвольные моменты времени и разными мудреными алгоритмами поиска мертвых указателей и циклических ссылок!

    habr.com/ru/articles/853646/

    #c++ #указатели #ссылки #сборщик_мусора

  33. Следует ли проверять указатель на NULL перед вызовом функции free?

    Короткий ответ: нет. Тем не менее, раз про это вновь и вновь спрашивают на Reddit, Stack Overflow и других сайтах, пришло время подробно разобрать эту тему. Оказывается, есть много интересного, о чём можно порассуждать.

    habr.com/ru/companies/pvs-stud

    #c #си #программирование #free #malloc #указатели #макросы #нулевые_указатели

  34. Следует ли проверять указатель на NULL перед вызовом функции free?

    Короткий ответ: нет. Тем не менее, раз про это вновь и вновь спрашивают на Reddit, Stack Overflow и других сайтах, пришло время подробно разобрать эту тему. Оказывается, есть много интересного, о чём можно порассуждать.

    habr.com/ru/companies/pvs-stud

    #c #си #программирование #free #malloc #указатели #макросы #нулевые_указатели

  35. Go: передача значений VS передача указателей

    Go - один из немногих языков, в которых структуры можно передавать параметрами и возвращать из функций как по значению, так и по указателю. Это приводит к большей выразительности языка, но также разделяет общество разработчиков Go на два лагеря: сторонников указателей и сторонников значений. В данной статье предлагается во многом субъективное сравнение обоих способов и делается попытка убедить читателей передавать и возвращать значения в тех случаях, где это возможно.

    habr.com/ru/companies/it-guide

    #go #heap #pointers #указатели #code_style

  36. Go: передача значений VS передача указателей

    Go - один из немногих языков, в которых структуры можно передавать параметрами и возвращать из функций как по значению, так и по указателю. Это приводит к большей выразительности языка, но также разделяет общество разработчиков Go на два лагеря: сторонников указателей и сторонников значений. В данной статье предлагается во многом субъективное сравнение обоих способов и делается попытка убедить читателей передавать и возвращать значения в тех случаях, где это возможно.

    habr.com/ru/companies/it-guide

    #go #heap #pointers #указатели #code_style