Забудем ужасы C++/CLI и рассмотрим альтернативу. При всей простоте использования технологии P/Invoke, она, увы, пригодна лишь для использования библиотек, предоставляющих функции в C-стиле. Объектно-ориентированное же взаимодействие с нативным кодом традиционно реализовывалось средствами C++/CLI, который не совместим с .NET Core (пока) и с не-Windows платформами (вообще). С движением .NET на другие платформы возникает проблема взаимодействия с неуправляемой частью приложения, которую как-то надо решать. В докладе будет представлено решение, которое: позволяет двухстороннее прозрачное взаимодействие между C++ и C# на уровне интерфейсов, которые могут реализовывать как классы C#, так и классы C++; обеспечивает контроль использования памяти на основе подсчёта ссылок; не изобретает новый велосипед, а не совсем традиционно использует давно проверенные временем и тысячами приложений технологии и принципы; на текущий момент успешно используется в проекте Avalonia для взаимодействия C#C++Objective-C без завязок на хитропропатченные рантаймы типа Xamarin.Mac.
. Performance is at the heart of .NET, with an incredible amount of energy invested in every release towards making the stack faster and more scalable. In this talk, Stephen Toub will walk through ex…
Initialisation semantics is widely regarded as one of the most difficult aspects of the C++ language. We have many different kinds of initialisation and many different syntaxes for it, and they inter…
Ошибки и проблемы использования многопоточности в .NET. Платформа .NET предоставляет множество готовых примитивов синхронизации и потокобезопасных коллекций. Если при разработке приложения нужно реа…
Too often, C++ developers tend to ignore ABI compatibility problems and think that incompatibilities are limited to changes in the interface of the library motivated by new features or bugs. However,…
Developing cross-platform apps for Windows, iOS, macOS, Android, and WebAssembly can be a complex process, especially when it comes to the user interface. Each platform has its ways of defining dynam…
Совсем не хардкорное введение в WebAssembly. Напишем немного кода для стековой виртуальной машины, заглянем под капот v8. И, чтобы нам точно было не скучно, добавим немного C++ и Rust.
Новых фич C# 8 много, надо про все знать. Очередной релиз C# приносит достаточно много новых фич, которые хочется обсудить. Тут присутствуют как кардинальные изменения, которые затрагивают весь язык…
Вы задумывались, как ReSharper анализирует ваш код? В докладе Андрей с практическими примерами расскажет о том, как писать кросс-процедурные анализы кода и почему это теперь необходимо для самых раз…
Код языка C++ подобен минному полю. Поэтому качественный внимательный code-review крайне полезен. Этот доклад улучшит ваши навыки в этом нелёгком деле. Мы поговорим о некоторых паттернах ошибок, о ко…
Создание парсеров и лексических анализаторов — затратное по времени дело. Обычно к ним прибегают при необходимости реализации различного рода формальных грамматик, в том числе предметно-ориентированн…
Каковы связи между обновлениями, работающими в режиме реального времени, инкрементными сборками, кэшированием, избыточностью микросервиса и, наконец, популярностью React? Александр покажет, как набор…
Как известно, языки программирования слабы в описании того, что нужно делать разработчикам. Они, конечно, пытаются помочь, но не всегда успешно. В результате программы содержат множество ошибок, что …
C++17 is a huge combination of small new features both in the language and the library. These features have more poser but also more traps than you might expect. These traps are not theoretical. They…
Доклад посвящён одному из подходов реализации метаклассов (пропозал p0707 rev3 — последний доступный публично на текущий момент) для тех версий компиляторов, которые не поддерживают ни статической ре…
The SOLID principles. The five commandments of the software world. Forgotten for years, as developers focused on JavaScript frameworks with stupid names and complicated patterns. Not grasping that th…
В докладе будут рассмотрены способы передачи компилятору информации об используемых данных и действиях над ними: от single compilation unit, link time optimization и static initialization до consteva…
Когда мы работаем с БД, мы зачастую получаем сырые буферы, в то время как хочется получать данные в виде структур, классов и контейнеров C++. Рассказ о проектировании и реализации драйвера PostgreSQ…
Глубокий рассказ о метапрограммировании в ретроспективе. Обсудим общие подходы в метапрограммировании, а затем перейдём к спискам типов. По шагам напишем небольшую библиотеку для работы со списками т…
This talk shows how to write a 2D game using the MonoGame framework with C# that runs on Windows, Linux, Android, and other platforms supported by MonoGame. MonoGame is a framework originally modele…