Speaker

Viktor Kirilov

Viktor Kirilov

in crypto - probably forever

Sofia, Bulgaria

Actions

Viktor is the author of a successful open source C++ testing framework and has been a regular speaker at international conferences on topics relating to C++. The summary of his career looks like this: game development & VFX between 2012 and 2018, compilers, databases & distributed systems until 2020, and in crypto ever since - probably forever.

Area of Expertise

  • Information & Communications Technology
  • Media & Information

Topics

  • C++
  • blockchain
  • cryptocurrency
  • Architecture
  • P2P
  • decentralized identity
  • Decentralization

Mix Tests and Production Code With Doctest: Implementing and Using the Fastest C++ Testing Framework

doctest is new to the C++ testing framework scene but is by far the fastest both in compile times (by orders of magnitude) and runtime compared to other such feature-rich alternatives.

It brings the ability of compiled languages such as D / Rust / Nim to have tests written directly in the production code by providing a fast, transparent and flexible test runner with a clean interface which can be removed entirely from the binary along with all tests for release builds of the software that are shipped to customers.

The framework can be used like any other even if you don't want/need to mix production code and tests - the list of features doesn't stop growing.

By attending this talk you will get familiar with the framework and see how it's different from all the rest.

To make things more interesting the presentation will not just focus on using the framework, but will delve into useful and generally applicable C++ techniques from its implementation for more than half the session length which can be applied in different areas of your work - like how to:

- register code automatically before the program enters main()
- decompose expressions with templates
- translate exceptions - type-erased user-registerable translators
- write a header-only library which compiles very very fast not at the cost of runtime performance
- implement assert macros that don't result in code bloat
- deal with warnings outside of the framework header - generated by code expanded from macros
- loop a void owl once with while((void)0,0)

Nim - the first natively compiled language with full support for hot code-reloading at runtime

Nim is a statically typed systems and applications programming language which offers some of the most powerful metaprogramming capabilities. It is the next iteration of language design and aims to dethrone C/C++ for high performance coding - among its rivals are Rust and D. Nim is also suited for software typically written in C#, Java, etc.

It is the first language that is compiled to native executable code and fully supports runtime hot code-reloading without almost any limitations, along with a REPL - an environment which most developers using scripting languages take for granted and is cherished especially by those working in science and education.

The session consists of an introduction to the language and the motivation behind it, followed by a demo of runtime hot code-reloading, the use of a REPL and an explanation of how that is implemented.

The Hitchhiker's Guide to Faster Builds

C++ is known for things such as performance, expressiveness, the lack of a standard build system and package management, complexity and long compile times.
The inability to iterate quickly is one of the biggest killers of productivity. This talk is aimed at anyone interested in improving the last of these points - it will provide insights into why compilation (and linking) take so long for C++ and will then provide an exhaustive list of techniques and tools to mitigate the problem, such as:
- tooling and infrastructure - hardware, build systems, caching, distributed builds, diagnostics of bottlenecks, code hygiene
- techniques - unity builds, precompiled headers, linking (static vs shared libraries)
- source code modification - the PIMPL idiom, better template use, annotations
- modules - what they are, when they are coming to C++ and what becomes obsolete because of them

C++ as Assembly 2.0 - Hello Nim

Software engineering usually doesn't dictate business needs and goals but is at the heart of the modern world as we know it. In this talk we will go through an exercise of first principles thinking and look at software development into perspective - how things are done, how they could be done and why things are the way they are.

In C++ it takes more than 5000 lines of code to properly implement optional - a value and a bool (hopefully without bugs and design flaws - fingers crossed! and let's not mention build times...).

Nim is a statically typed systems and applications programming language which offers some of the most powerful metaprogramming capabilities. It is the next iteration of imperative language design and aims to dethrone C/C++ for high performance coding - among its rivals are Rust and D. Nim is also perfectly suited for software typically written in C#, Java, JavaScript, etc. - basically all types of software. Nim can bridge the gap between business logic and high performance, sprinkling improved developer productivity on top. Nim is compiled to C/C++ (and JavaScript among others) and thus interoperability is straightforward and without any performance penalties - lots of existing C/C++ software can be reused and built upon.

The talk outline is as follows:
- the landscape of (compiled & high performance) programming languages and their use in the industry
- thoughts on the evolution of C++ and where it fits
- introduction to Nim - features and capabilities
- metaprogramming and introspection in Nim (HTML DSL example)
- the whole-program compilation model of Nim - how the compiler actually works and what the generated C++ code looks like
- a thorough comparison with C++ (language features and workflow)
- interfacing with C++
- the future of the language and ways to go forward

It's time to treat C++ as assembly and the C++ ecosystem as just another platform which a language such as Nim can target. Typescript is a bright example of a better tool for software development on top of a stable system.

NDC TechTown 2019 Sessionize Event

September 2019 Kongsberg, Norway

Viktor Kirilov

in crypto - probably forever

Sofia, Bulgaria

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top