Вышла новая версия проекта LLVM и компилятора Clang - LLVM 20/ Clang 20
LLVM/Clang 20 — это новейший полугодовой релиз популярного стека компиляторов с открытым исходным кодом, который широко используется многими различными поставщиками для различных целей: от традиционной компиляции C/C++ до интенсивного использования для вычислительных стеков GPU, растущего использования ИИ с MLIR и многого другого.
В новой версии LLVM/Clang 20 добавлена поддержка ряда расширений, в частности, AMX-AVX512, AMX-FP8, AVX10.2, AMD GFX950 и т.д. Добавлен фреймворк для сбора телеметрии, новый современный компилятор Fortran теперь доступен через команду flang и т.д. В Clang добавлен ряд возможностей последних стандартов C и C++.
Подробнее все изменения по Clang: https://releases.llvm.org/20.1.0/tools/clang/docs/ReleaseNotes.html
https://github.com/llvm/llvm-project/releases/tag/llvmorg-20.1.0
LLVM/Clang 20 — это новейший полугодовой релиз популярного стека компиляторов с открытым исходным кодом, который широко используется многими различными поставщиками для различных целей: от традиционной компиляции C/C++ до интенсивного использования для вычислительных стеков GPU, растущего использования ИИ с MLIR и многого другого.
В новой версии LLVM/Clang 20 добавлена поддержка ряда расширений, в частности, AMX-AVX512, AMX-FP8, AVX10.2, AMD GFX950 и т.д. Добавлен фреймворк для сбора телеметрии, новый современный компилятор Fortran теперь доступен через команду flang и т.д. В Clang добавлен ряд возможностей последних стандартов C и C++.
Подробнее все изменения по Clang: https://releases.llvm.org/20.1.0/tools/clang/docs/ReleaseNotes.html
https://github.com/llvm/llvm-project/releases/tag/llvmorg-20.1.0
GitHub
Release LLVM 20.1.0 · llvm/llvm-project
LLVM 20.1.0 Release
A note on binaries
Volunteers make binaries for the LLVM project, which will be uploaded
when they have had time to test and build these binaries. They might
not be available di...
A note on binaries
Volunteers make binaries for the LLVM project, which will be uploaded
when they have had time to test and build these binaries. They might
not be available di...
👍8🔥2👏1🤮1
12 распространеных структур данных
1. Массив
- Набор элементов фиксированного размера, хранящийся в непрерывной памяти.
- Обеспечивает доступ O(1) на основе индекса
2. Матрица (двухмерный массив)
- Многомерный массив, используемый для представления сеток, графиков и задач динамического программирования.
3. Связный список
- Динамическая структура данных, в которой элементы (узлы) связаны посредством указателей.
- Типы: односвязный список, двусвязный список, кольцевой связный список.
4. Стек
- Структура данных «последним пришел — первым ушел» (Last-In-First-Out / LIFO), в которой элемент, добавленный последним, удаляется первым.
- Поддерживает операции push, pop и peek за время O(1).
5. Очередь
- Структура данных «первым пришел — первым вышел» ( First-In-First-Out / FIFO).
- Позволяет вставлять в конец очереди (помещать в очередь) и удалять из начала очереди (вынимать из очереди) за время O(1).
- Используется для обработки элементов в том же порядке, в котором они добавляются.
6. Хешкарта(словарь)
- Структура данных «ключ-значение», использующая хеш-функцию для быстрого поиска.
- Обеспечивает среднее время вставки/удаления/поиска O(1), O(N) (в худшем случае из-за коллизий)
7. Дерево
- Иерархическая структура данных с корневым узлом и дочерними узлами.
- Типы: двоичное дерево, N-арное дерево, AVL-дерево, красно-черное дерево (Red-Black Tree)
8. Бинарное дерево поиска (𝐁𝐢𝐧𝐚𝐫𝐲 𝐒𝐞𝐚𝐫𝐜𝐡 𝐓𝐫𝐞𝐞 / 𝐁𝐒𝐓)
- Особый тип деревьев, где имеется отношение левый узел < кореневой узел < правый узел
- Позволяет выполнять поиск, вставку и удаление со скоростью O log N) в сбалансированных BST.
9. Очередь приоритетов / куча
- Структура на основе двоичного дерева, в которой родительский элемент всегда больше (максимальная куча) или меньше (минимальная куча), чем его дочерние элементы.
- Обеспечивает O(log N) вставки/удаления и O(1) получения минимума/максимума.
10. 𝐓𝐫𝐢𝐞
- Древовидная структура, используемая для быстрого поиска строк.
- Обеспечивает время O(M) для вставки/поискп/удаления, где M — длина строки.
11. Граф
- Совокупность узлов (вершин), соединенных ребрами.
- Для представленя применяются список смежности (Adjacency List) или матрица смежности (Adjacency Matrix)
- Типы: направленные, ненаправленные, взвешенные, невзвешенные.
12. 𝐔𝐧𝐢𝐨𝐧-𝐅𝐢𝐧𝐝 (𝐃𝐢𝐬𝐣𝐨𝐢𝐧𝐭 𝐒𝐞𝐭)
- A data structure used for efficiently handling dynamic connectivity.
- Supports Union(x, y) and Find(x) in nearly O(1) time (with path compression).
- Useful in detecting cycles and finding connected components in a graph.
12. 𝐔𝐧𝐢𝐨𝐧-𝐅𝐢𝐧𝐝 (𝐃𝐢𝐬𝐣𝐨𝐢𝐧𝐭 𝐒𝐞𝐭)
- Структура данных, используемая для эффективной обработки динамических подключений.
- Поддерживает операции Union(x, y) и Find(x) за время, почти равное O (1) время (со сжатием пути).
- Полезен для обнаружения циклов и поиска связанных компонентов в графе.
1. Массив
- Набор элементов фиксированного размера, хранящийся в непрерывной памяти.
- Обеспечивает доступ O(1) на основе индекса
2. Матрица (двухмерный массив)
- Многомерный массив, используемый для представления сеток, графиков и задач динамического программирования.
3. Связный список
- Динамическая структура данных, в которой элементы (узлы) связаны посредством указателей.
- Типы: односвязный список, двусвязный список, кольцевой связный список.
4. Стек
- Структура данных «последним пришел — первым ушел» (Last-In-First-Out / LIFO), в которой элемент, добавленный последним, удаляется первым.
- Поддерживает операции push, pop и peek за время O(1).
5. Очередь
- Структура данных «первым пришел — первым вышел» ( First-In-First-Out / FIFO).
- Позволяет вставлять в конец очереди (помещать в очередь) и удалять из начала очереди (вынимать из очереди) за время O(1).
- Используется для обработки элементов в том же порядке, в котором они добавляются.
6. Хешкарта(словарь)
- Структура данных «ключ-значение», использующая хеш-функцию для быстрого поиска.
- Обеспечивает среднее время вставки/удаления/поиска O(1), O(N) (в худшем случае из-за коллизий)
7. Дерево
- Иерархическая структура данных с корневым узлом и дочерними узлами.
- Типы: двоичное дерево, N-арное дерево, AVL-дерево, красно-черное дерево (Red-Black Tree)
8. Бинарное дерево поиска (𝐁𝐢𝐧𝐚𝐫𝐲 𝐒𝐞𝐚𝐫𝐜𝐡 𝐓𝐫𝐞𝐞 / 𝐁𝐒𝐓)
- Особый тип деревьев, где имеется отношение левый узел < кореневой узел < правый узел
- Позволяет выполнять поиск, вставку и удаление со скоростью O log N) в сбалансированных BST.
9. Очередь приоритетов / куча
- Структура на основе двоичного дерева, в которой родительский элемент всегда больше (максимальная куча) или меньше (минимальная куча), чем его дочерние элементы.
- Обеспечивает O(log N) вставки/удаления и O(1) получения минимума/максимума.
10. 𝐓𝐫𝐢𝐞
- Древовидная структура, используемая для быстрого поиска строк.
- Обеспечивает время O(M) для вставки/поискп/удаления, где M — длина строки.
11. Граф
- Совокупность узлов (вершин), соединенных ребрами.
- Для представленя применяются список смежности (Adjacency List) или матрица смежности (Adjacency Matrix)
- Типы: направленные, ненаправленные, взвешенные, невзвешенные.
12. 𝐔𝐧𝐢𝐨𝐧-𝐅𝐢𝐧𝐝 (𝐃𝐢𝐬𝐣𝐨𝐢𝐧𝐭 𝐒𝐞𝐭)
- A data structure used for efficiently handling dynamic connectivity.
- Supports Union(x, y) and Find(x) in nearly O(1) time (with path compression).
- Useful in detecting cycles and finding connected components in a graph.
12. 𝐔𝐧𝐢𝐨𝐧-𝐅𝐢𝐧𝐝 (𝐃𝐢𝐬𝐣𝐨𝐢𝐧𝐭 𝐒𝐞𝐭)
- Структура данных, используемая для эффективной обработки динамических подключений.
- Поддерживает операции Union(x, y) и Find(x) за время, почти равное O (1) время (со сжатием пути).
- Полезен для обнаружения циклов и поиска связанных компонентов в графе.
❤14👍7👏1😐1
Microsoft добавил в .NET новый тип проекта - .NET AI Chat Template (пока в Preview-версии), который разработан, чтобы быстро создать приложение чата на базе ИИ. Этот начальный выпуск базируется на веб-приложении на базе Blazor, созданном с использованием абстракций Microsoft.Extensions.AI и Microsoft.Extensions.VectorData. Шаблон использует шаблон Retrieval Augmented Generation (RAG), который обычно используется для приложений чата.
Шаблон нового проекта доступен как через .NET CLI, так и в Visual Studio
https://devblogs.microsoft.com/dotnet/announcing-dotnet-ai-template-preview1/
Шаблон нового проекта доступен как через .NET CLI, так и в Visual Studio
https://devblogs.microsoft.com/dotnet/announcing-dotnet-ai-template-preview1/
🤯8👍4👏2🔥1🤬1😢1🤡1
В руководство по языку Python добавлена статья про Установку пакетов, пакетный менеджер pip и виртуальную среду
https://metanit.com/python/tutorial/6.8.php
#python
https://metanit.com/python/tutorial/6.8.php
#python
Metanit
Python | Установка пакетов, pip и виртуальная среда
Установка пакетов в проекте на языке программирования Python, пакетный менеджер pip, управление пакетами, виртуальная среда venv, создание и активация виртуальной среды, пример установки и использования пакета matplotlib
🔥12👍4❤🔥2
Google добавил приложение Linux Terminal в состав мартовского обновления Android 15 ("Pixel Feature Drop") для устройств Google Pixel. Приложение позволяет запустить в окружении Android виртуальную машину с Debian GNU/Linux, в которой можно выполнять обычные Linux-приложения.
Активация Linux Terminal производится в настройках для разработчиков (секция "Settings > System > Developer > Linux development environment"). Для появления данной опции необходимо активировать режим разработчика, быстро нажав семь раз на номере сборки на странице "Settings → About Phone". После первого запуска приложение предлагает загрузить на устройство образ виртуальной машины c Linux, который занимает около 500 МБ.
https://www.androidpolice.com/android-15-linux-terminal-app/
Активация Linux Terminal производится в настройках для разработчиков (секция "Settings > System > Developer > Linux development environment"). Для появления данной опции необходимо активировать режим разработчика, быстро нажав семь раз на номере сборки на странице "Settings → About Phone". После первого запуска приложение предлагает загрузить на устройство образ виртуальной машины c Linux, который занимает около 500 МБ.
https://www.androidpolice.com/android-15-linux-terminal-app/
❤24🔥6🍾2🤡1
В руководство по языку Си добавлена статья про функции setjmp и longjmp и обработку ошибок
https://metanit.com/c/tutorial/10.2.php
#c_ansi
https://metanit.com/c/tutorial/10.2.php
#c_ansi
Metanit
Язык программирования Си | Функции setjmp и longjmp и обработка ошибок
Функции setjmp и longjmp в программе на языке Си, выход из вложенных функций, обработка ошибок
🔥14👍3🤩2😍2
Разработчики проекта Wine представили выпуск фреймворка Mono 6.14.0 - альтернативную версию среды выполнения .NET. Выпуск Mono Framework 6.14.0 вобрал в себя изменения, накопившиеся за 5 лет, и является первым выпуском после того, как компания Microsoft передала разработку Mono сообществу Wine.
Mono поддерживает Linux (x86, amd64, arm64), macOS (amd64, arm64) и Windows (x86, amd64). Бинарные сборки пока не предоставляются.
В Mono 6.14.0 добавлена поддержка macOS с архитектурой ARM64. улучшено взаимодействие технологии System.Windows.Forms и протокола X11, улучшена поддержка генерируемых COM-интерфейсов и т.д.
https://www.winehq.org/news/2025030801
#dotnet #csharp
Mono поддерживает Linux (x86, amd64, arm64), macOS (amd64, arm64) и Windows (x86, amd64). Бинарные сборки пока не предоставляются.
В Mono 6.14.0 добавлена поддержка macOS с архитектурой ARM64. улучшено взаимодействие технологии System.Windows.Forms и протокола X11, улучшена поддержка генерируемых COM-интерфейсов и т.д.
https://www.winehq.org/news/2025030801
#dotnet #csharp
WineHQ
Framework Mono 6.14.0 Released
👍4
JWT — один из наиболее широко используемых методов аутентификации API, обеспечивающий безопасный, масштабируемый способ проверки клиентов без сохранения состояния.
Как работает JWT:
1) Аутентификация клиента
Клиент (пользователь, приложение или устройство) предоставляет учетные данные (например, имя пользователя/пароль) серверу аутентификации.
2) Проверка сервера
Сервер аутентификации проверяет учетные данные по своей базе данных или поставщику удостоверений, чтобы подтвердить их действительность.
3) Выпуск JWT
Если аутентификация прошла успешно, сервер:
☑️ Генерирует JWT с подтверждениями (например, идентификатор пользователя, роли, разрешения).
☑️ Подписывает JWT с помощью секретного ключа (HS256) или закрытого ключа (RS256).
4) Доставка токенов
Сервер отправляет подписанный JWT обратно клиенту в ответе.
5) Безопасное хранение
Клиент хранит JWT в безопасности, чтобы предотвратить несанкционированный доступ. HTTP-cookie-файлы являются наиболее безопасным и широко используемым методом.
6) API-запросы с JWT
Для каждого запроса к защищенному API клиент включает JWT в заголовок авторизации:
7) Сервер проверяет JWT
Перед предоставлением доступа сервер API проверяет JWT, проверяя следующие аспекты:
☑️ Подпись – подтверждает целостность токена (не подделан).
☑️ Истечение срока действия — гарантирует, что срок действия токена не истек.
☑️ Аудитория (заявление aud) — проверяет, предназначен ли токен для этого API.
☑️ Эмитент (заявление iss) — подтверждает, что токен был выпущен доверенным органом.
Если JWT действителен, сервер предоставляет доступ к запрошенному ресурсу. В противном случае он отклоняет запрос (401 Unauthorized).
8) Истечение срока действия токена и обновление
Поскольку срок действия JWT истекает по соображениям безопасности, клиенту необходим токен обновления (refresh token), чтобы получить новый:
↳ Клиент отправляет токен обновления на сервер.
↳ Сервер проверяет и выдает новый JWT, если токен обновления действителен.
↳ Новый JWT заменяет просроченный, и клиент продолжает делать запросы.
Подобный рабочий процесс обеспечивает безопасную, эффективную и не зависящую от состояния аутентификацию для API, контролируя производительность и масштабируемость.
Как работает JWT:
1) Аутентификация клиента
Клиент (пользователь, приложение или устройство) предоставляет учетные данные (например, имя пользователя/пароль) серверу аутентификации.
2) Проверка сервера
Сервер аутентификации проверяет учетные данные по своей базе данных или поставщику удостоверений, чтобы подтвердить их действительность.
3) Выпуск JWT
Если аутентификация прошла успешно, сервер:
☑️ Генерирует JWT с подтверждениями (например, идентификатор пользователя, роли, разрешения).
☑️ Подписывает JWT с помощью секретного ключа (HS256) или закрытого ключа (RS256).
4) Доставка токенов
Сервер отправляет подписанный JWT обратно клиенту в ответе.
5) Безопасное хранение
Клиент хранит JWT в безопасности, чтобы предотвратить несанкционированный доступ. HTTP-cookie-файлы являются наиболее безопасным и широко используемым методом.
6) API-запросы с JWT
Для каждого запроса к защищенному API клиент включает JWT в заголовок авторизации:
Authorization: Bearer<JWT> 7) Сервер проверяет JWT
Перед предоставлением доступа сервер API проверяет JWT, проверяя следующие аспекты:
☑️ Подпись – подтверждает целостность токена (не подделан).
☑️ Истечение срока действия — гарантирует, что срок действия токена не истек.
☑️ Аудитория (заявление aud) — проверяет, предназначен ли токен для этого API.
☑️ Эмитент (заявление iss) — подтверждает, что токен был выпущен доверенным органом.
Если JWT действителен, сервер предоставляет доступ к запрошенному ресурсу. В противном случае он отклоняет запрос (401 Unauthorized).
8) Истечение срока действия токена и обновление
Поскольку срок действия JWT истекает по соображениям безопасности, клиенту необходим токен обновления (refresh token), чтобы получить новый:
↳ Клиент отправляет токен обновления на сервер.
↳ Сервер проверяет и выдает новый JWT, если токен обновления действителен.
↳ Новый JWT заменяет просроченный, и клиент продолжает делать запросы.
Подобный рабочий процесс обеспечивает безопасную, эффективную и не зависящую от состояния аутентификацию для API, контролируя производительность и масштабируемость.
👍16💅3🔥2👏2
От владельцев сайтов требуют получать у Роскомнадзора разрешение на использование Google Analytics
Роскомнадзор стал уведомлять владельцев интернет-сайтов о том, что использование ими счетчика посещений Google Analytics приравнивается в трансграничной передаче данных. О запрете использования данного счетчика речь не идет, но его необходимо деактивировать и получать разрешение на использование.
https://www.cnews.ru/news/top/2025-03-10_ot_vladeltsev_sajtov_trebuyut
Роскомнадзор стал уведомлять владельцев интернет-сайтов о том, что использование ими счетчика посещений Google Analytics приравнивается в трансграничной передаче данных. О запрете использования данного счетчика речь не идет, но его необходимо деактивировать и получать разрешение на использование.
https://www.cnews.ru/news/top/2025-03-10_ot_vladeltsev_sajtov_trebuyut
CNews.ru
От владельцев сайтов требуют получать у Роскомнадзора разрешение на использование Google Analytics - CNews
Роскомнадзор стал уведомлять владельцев интернет-сайтов о том, что использование ими счетчика посещений Google Analytics приравнивается в трансграничной передаче данных. О запрете использования...
🤡12😐12🤯3😁2
Зоопарк протоколов API
🔹 SOAP:
Зрелый, всеобъемлющий протокол, основанный на XML,
лучше всего подходит для корпоративных приложений
🔹 RESTful:
Популярный и простой в реализации, базируется на методах HTTP
Идеально подходит для веб-сервисов
🔹 GraphQL:
Язык запроса, запрашивает определенные данные
Снижает нагрузку на сеть, ускоряет отклик
🔹 gRPC:
Современныq, высокопроизводительный способ взаимодействия, использует формат данных Protocol Buffers
Подходит для архитектур микросервисов
🔹 WebSocket:
Двунаправленные, постоянные соединения в режиме реального времени
Идеально подходит для обмена данными с малой задержкой
🔹 Webhook:
Управляемый событиями, асинхронный, использует обратные вызовы HTTP
Уведомляет системы о возникновении событий
🔹 SOAP:
Зрелый, всеобъемлющий протокол, основанный на XML,
лучше всего подходит для корпоративных приложений
🔹 RESTful:
Популярный и простой в реализации, базируется на методах HTTP
Идеально подходит для веб-сервисов
🔹 GraphQL:
Язык запроса, запрашивает определенные данные
Снижает нагрузку на сеть, ускоряет отклик
🔹 gRPC:
Современныq, высокопроизводительный способ взаимодействия, использует формат данных Protocol Buffers
Подходит для архитектур микросервисов
🔹 WebSocket:
Двунаправленные, постоянные соединения в режиме реального времени
Идеально подходит для обмена данными с малой задержкой
🔹 Webhook:
Управляемый событиями, асинхронный, использует обратные вызовы HTTP
Уведомляет системы о возникновении событий
👍18❤4🔥2