Skip to content

Instantly share code, notes, and snippets.

View RedBeard0531's full-sized avatar

Mathias Stearn RedBeard0531

View GitHub Profile
# This was created by cxx_modules_builder. DO NOT EDIT.
MAKE_NINJA = /home/mstearn/opensource/cxx_modules_builder/modules_builder.py
CXX = /usr/sbin/clang++
# START HEADER
COMMONFLAGS = -stdlib=libc++ -pthread
DEBUGFLAGS = -ggdb3 -gsplit-dwarf
CXXFLAGS = -fcolor-diagnostics -fPIC -Isrc -Ibuild/src -Isrc/external/pegtl/include/tao/ -std=c++2a -DREALM_DEBUG=1 $COMMONFLAGS $DEBUGFLAGS
LIBS = -lcrypto -lc++experimental
LINKFLAGS = -fuse-ld=lld $COMMONFLAGS
@RedBeard0531
RedBeard0531 / cpp17.md
Last active September 21, 2022 03:50
New C++17 features

Supplement to this video. Watch first 35 min (the language bits), then 1:14:30 - 1:18:15 (the new map features).

You can find a fairly comprehensive list of new features on cppreference or here if you really want to see it all.

Recap of features described in the video

@RedBeard0531
RedBeard0531 / generator.h
Created September 14, 2021 12:59
C++20 generator with nice semantics for simple generator<T>
#pragma once
#include <iterator>
#include <utility>
#include <coroutine>
// Only need one of these. Shouldn't depend on generator's T.
struct generator_sentinel {};
template <typename T>
@RedBeard0531
RedBeard0531 / functions.js
Created February 22, 2012 20:13
Min, Max, Sum, Count, Avg, and Std deviation using MongoDB MapReduce
// derived from http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Parallel_algorithm
function map() {
emit(1, // Or put a GROUP BY key here
{sum: this.value, // the field you want stats for
min: this.value,
max: this.value,
count:1,
diff: 0, // M2,n: sum((val-mean)^2)
});
-------------------------------- MODULE OT --------------------------------
EXTENDS Integers, TLC, FiniteSets, Sequences
CONSTANTS i_set, i_inc, i_nop \* Instruction model values
CONSTANT NULL
CONSTANT ImprovedAlgo
ASSUME ImprovedAlgo \in BOOLEAN
@RedBeard0531
RedBeard0531 / mod_reach.cpp
Created November 7, 2019 13:39
module reachability examples
export module quux;
export struct quux{};
///////////
// bar.h
import quux
/////////
clang++ -std=c++2a -x c++-module iface.cpp --precompile -o iface.pcm -stdlib=libc++
clang++ -std=c++2a -x c++ consumer.cpp -c -o consumer.o -fmodule-file=iface.pcm -stdlib=libc++
echo <<OUTPUT
In file included from consumer.cpp:2:
In file included from /usr/include/c++/v1/string:505:
In file included from /usr/include/c++/v1/string_view:176:
In file included from /usr/include/c++/v1/__string:57:
In file included from /usr/include/c++/v1/algorithm:643:
/usr/include/c++/v1/utility:574:1: error: redeclaration of deduction guide
@RedBeard0531
RedBeard0531 / sc.cpp
Created March 14, 2019 18:45
Example of non-sequential consistency
// {{{
// vim: set foldmethod=marker:
// g++ -O3 -pthread sc.cpp && ./a.out
#include <cstdio>
#include <thread>
#include <atomic>
using namespace std;
constexpr auto load_order = memory_order_acquire;
constexpr auto store_order = memory_order_release;
@RedBeard0531
RedBeard0531 / gist:23330df6cf9e320e5ff80febae2b522f
Created February 9, 2019 17:28
Header depths of various codebases
(depth 1 are direct includes from the cpp)
A single file from our codebase:
28 headers at depth 1
35 headers at depth 2
50 headers at depth 3
74 headers at depth 4
82 headers at depth 5
89 headers at depth 6
127 headers at depth 7
@RedBeard0531
RedBeard0531 / symmetric_coro_in_ts.cpp
Created February 5, 2019 18:07
Symmetric coroutines using the coroutines TS
// A possible implementation of symmetic coroutines on top of the asymmetric coroutines ts.
// At the bottom of this file, I've rewritten the symmetric examples from Boot.Coroutine
// using this mechanism. You can see the originals at
// https://www.boost.org/doc/libs/1_69_0/libs/coroutine/doc/html/coroutine/coroutine/symmetric.html
#include <experimental/coroutine>
#include <cassert>
#include <list>
#include <optional>
#include <vector>