libasync (everyone has one) and asio

An Architecture for Internet Data Transfer | Tolia, Kaminsky, Andersen, Patil

Niraj Tolia, Michael Kaminsky, David G. Andersen, Swapnil Patil; An Architecture for Internet Data Transfer; In Proceedings of the Symposium on Networked Systems Design and Implementation (NSDI), in the USENIX sphere; 2006.

tl;dr → A “content-centric networking” concept with cryptographic hashes on blobs of data, which can be transferred out of order and across time & space. Hard to get that out of the paper though.

Abstract

This paper presents the design and implementation of DOT, a flexible architecture for data transfer. This architecture separates content negotiation from the data transfer itself. Applications determine what data they need to send and then use a new transfer service to send it. This transfer service acts as a common interface between applications and the lower-level network layers, facilitating innovation both above and below. The transfer service frees developers from re-inventing transfer mechanisms in each new application. New transfer mechanisms, in turn, can be easily deployed without modifying existing applications.

We discuss the benefits that arise from separating data transfer into a service and the challenges this service must overcome. The paper then examines the implementation of DOT and its plugin framework for creating new data transfer mechanisms. A set of microbenchmarks shows that the DOT prototype performs well, and that the overhead it imposes is unnoticeable in the wide-area. End-to-end experiments using more complex configurations demonstrate DOT’s ability to implement effective, new data delivery mechanisms underneath existing services. Finally, we evaluate a production mail server modified to use DOT using trace data gathered from a live email server. Converting the mail server required only 184 lines-of-code changes to the server, and the resulting system reduces the bandwidth needed to send email by up to 20%.

Mentions

  • No code (this was before the era of githubbery.
    • Only a protocol proposal; no reference implementation.
    • Perhaps there was an experimental implementation, but it is not available.
  • David Mazières, Frank Dabek, Eric Peterson, Thomer M. Gil. Using libasync; Technical Report; PDOS, CSAIL, MIT; 2004.12 pages; pdf; followup separately filled.

The C++14 Standard: What You Need to Know | Dr Dobb’s

The C++14 Standard: What You Need to Know; Mark Nelson; In Dr. Dobb’s; 2014-09-16.

Mentions

C++11

  • Welcome Back to C++ (Modern C++); Microsoft Developer Network; 2013
    for Visual Studio 2013
  • Stack scope contra static or global scope
  • Auto type inference contra explicit type names
  • Smart pointers
  • std::string, std::wstring in lieu of char[] and wchar_t[]; from <string>
  • STL Containers: <vector> <list> <map>
  • STL Algorithms
  • Exceptions
  • STL Lock-free inter-thread Communication std::atomic<> from <atomic>
  • Lambda functions
  • Range-based loops

C++14

  • Type deduction for function return types
    the auto return type
  • Generic Lambdas
    the auto parameter type declaration
  • Initialized Lambda Captures
    e.g. auto y = [&r = x, x = x+1, p=std::move(p)](...)->int {...}
  • The [[deprecated]] Attribute
    and compiler flag -Wdeprecated-declarations
    e.g. class [[deprecated]] flaky { ... };
  • Binary Literals
    with the 0b prefix
    e.g.  0b010101010101
  • Digit Separators
    with the single-quote separator
    e.g.  1'000'000.00.
  • Variable templates; unclear
  • Expansion of compile-time evaluation; for constexprfunctions
    • multiple returns,
    • internal case (switch) statements,
    • internal if statements,
    • loops,
    • (and more!)
  • Sized deallocations
  • “and some syntax tidying.”

Lock-free Data Structures. The Inside. Memory Management Schemes | Kukuruku Technology Hub

Lock-free Data Structures. The Inside. Memory Management Schemes; Some Cub Reporter; In Kukuruku Technology Hub; 2014-06-01.

Mentions

  • previous articles
  • The ABA Problem
  • Memory Reclamation
  • Tagged Pointers
  • MSQueue: A Lock-Free Queue; Michael-Scott; 1998
  • Compare-and-Swap (CAS)
    • dwCAS
    • dwaCAS
    • 128-bit CAS
    • 96-bit CAS
    • 64-bit CAS
  • libcds
  • Boost.Lockfree
  • Pass-the-Buck (PTB) Algorithm

References

A C error handling style that plays nice with C++ exceptions | Stefanus Du Toit

Stefanus Du Toit; A C error handling style that plays nice with C++ exceptions; In His Blog; 2014-05-01.

Mentions

  • Expected use is straightline “C” functions.
  • Requires the barrier of the statement terminator ‘;’ to operate.
  • Depends upon destruction of temporaries at the end of the statement
  • Won’t work in aggregate statements (if, the loops) where temporaries destrict late.
  • Requires noexcept on destructors.
  • Unclear if the idiom will work more than once in a statement..
libfoo_create_widgets(12, &container, ThrowOnError());