Skip to content

Commit 36dca30

Browse files
Added References page, updated README with new page and C++ baseline requirements.
1 parent 83f1cb3 commit 36dca30

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,20 @@ Contributions have been made by Matthew Briggs, Daniel Muldrew, and Bob Higgins.
5252

5353
Chops Net IP is in use at [Sound Life Sciences](https://www.soundlifesci.com/), a Seattle startup creating awesome medical software and devices using high frequency sound to monitor respiration rate. This allows detection of opiod overdose, early signs of infection, and other breathing related disorders.
5454

55+
## C++ Language Requirements and Alternatives
56+
57+
C++ 17 is the primary baseline for the Connective C++ projects.
58+
59+
A significant number of C++ 11 features are in the APIs and implementations. A C++ 03 version will not be provided in any of the Connective C++ repositories.
60+
61+
There are numerous C++ 14 and C++ 17 features in use, although many of them could be replaced with Boost (or similar) utilities or rewritten to use only C++ 11 capabilities. For users that don't want to use the latest C++ compilers or compile with C++ 17 flags, Martin Moene provides an excellent set of header-only libraries that implement many useful C++ library features, both C++ 17 as well as future C++ standards (see [References](doc/references.md)).
62+
63+
While the main production branch will always be developed and tested with C++ 17 features (and relatively current compilers), alternative branches and forks for older compiler versions may be implemented. Collaboration (through forking, change requests, etc) is very welcome to achieve older compiler conformance.
64+
65+
## References
66+
67+
Connective C++ would not be possible without articles, libraries, and code examples from the C++ community. The [References](doc/references.md) page lists the primary influences and library providers on this project.
68+
5569
## Team Bios
5670

5771
**Cliff Green** (cliffg at connectivecpp dot com) is a software engineer and has worked for many years writing infrastructure libraries and applications for use in networked and distributed systems, typically where high reliability or uptime is required. The domains where he has worked include wireless networks (in particular cellular 9-1-1), location technology, and large scale embedded and simulation systems in the military aerospace industry. He has volunteered many years at [CppCon](https://cppcon.org/) (when it was in Bellevue) and presented at BoostCon (before it was renamed to [C++ Now](http://cppnow.org/)).

doc/references.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Connective C++ References
2+
3+
## Networking and Asynchronous Design
4+
5+
- Chris Kohlhoff is a networking expert (among other expertises, including C++), creator of the Asio library and initial author of the C++ Networking Technical Standard (TS). Asio is [available here](https://think-async.com/) as well as at Chris' [GitHub site](https://github.com/chriskohlhoff/). Asio forms the basis for the C++ Networking Technical Standard (TS), which will be standardized in C++ 23 or C++ 26 (or thereabouts). Currently the Chops Net IP library uses the stand-alone Asio repository from Chris' GitHub account.
6+
7+
- Vinnie Falco is the author of the Boost Beast library, available at [Boost.org](https://www.boost.org/). Beast is an excellent building block library for asynchronous (and synchronous) HTTP and WebSocket applications. The Beast library uses Asio. Vinnie is proficient in C++ including presenting at [CppCon](https:://cppcon.org/) and is also active in blockchain development and other technology areas. Vinnie has a [GitHub site](https://github.com/vinniefalco). While Chops Net IP does not depend on Beast, the choices and design rationale made by Vinnie in implementing Beast are highly helpful.
8+
9+
- Kirk Shoop is a C++ expert, particularly in the area of asynchronous design, and has presented multiple times at [CppCon](https://cppcon.org/). He is a co-author of the [Unified Executors Proposal for C++](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0443r12.html) and has a [GitHub site](https://github.com/kirkshoop).
10+
11+
## Concurrency
12+
13+
- Anthony Williams is the author of Concurrency in Action, Practical Multithreading. He is a recognized expert in concurrency including Boost Thread and C++ standards efforts. It is highly recommended to buy his book, whether in paper or electronic form, and there is now a second edition of Concurrency in Action. Anthony has a [web site](http://www.justsoftwaresolutions.co.uk) and a [GitHub site](https://github.com/anthonywilliams).
14+
15+
## Useful Libraries
16+
17+
- Martin Moene is a C++ expert and member and former web editor of [accu-org](https://github.com/accu-org). He provides an excellent set of header-only libraries that implement many useful C++ library features, both C++ 17 as well as future C++ standards. These include `std::optional`, `std::variant`, `std::any`, and `std::byte` (from C++ 17) as well as `std::expected` and `ring_span` (possibly in a future C++ standard). He also has multiple other useful repositories including an implementation of the C++ Guideline Support Library (GSL). Martin has a [GitHub site](https://github.com/martinmoene).
18+
19+
- Justas Masiulis provides a nice [circular buffer implementation](https://github.com/JustasMasiulis/circular_buffer) used in the Utility Rack `wait_queue` test.
20+
21+
## Blogs, Articles, and Examples
22+
23+
- Andrzej Krzemieński is a C++ expert and proficient [blog author](https://akrzemi1.wordpress.com/). This blog is influential, well written, and a significant portion of the Chops code is directly influenced by it.
24+
25+
- Bjørn Reese [blogs about](http://breese.github.io/blog/) many topics in C++ at the expert level and is active with the Boost organization.
26+
27+
- Richard Hodges is a prolific C++ expert with over 1,900 answers on StackOverflow as well as numerous discussions relating to C++ standardization and has a [GitHub site](https://github.com/madmongo1).
28+
29+
- Vittorio Romeo is a blog author and C++ expert with a [web site](https://vittorioromeo.info/) and a [GitHub site](https://github.com/SuperV1234). Vittorio's blog is excellent and well worth reading.
30+
31+
- Blitz Rakete is a student software developer who has the user id of Rakete1111 on many forums and sites (including Stackoverflow) and has a [GitHub site](https://github.com/Rakete1111).
32+
33+
- Anders Schau Knatten has a [C++ blog](https://blog.knatten.org/) and is the creator and main editor of the [C++ quiz site](http://cppquiz.org/). One of the best overviews of lvalues, rvalues, glvalues, prvalues, and xvalues is [available here](https://blog.knatten.org/2018/03/09/lvalues-rvalues-glvalues-prvalues-xvalues-help/).
34+
35+
- Jonathan Müller is very active in the C++ universe and is well known as "foonathan". His has a [blog](https://foonathan.net/) and his article [Rvalue References in APIs](http://foonathan.net/blog/2018/03/26/rvalue-references-api-guidelines.html) is a must read for library designers.
36+
37+
## Build Tools
38+
39+
- Modern CMake design is important, although not a lot of reference material is available. See Daniel Pfeifer's C++Now 2017 talk on [Effective CMake](https://www.youtube.com/watch?v=bsXLMQ6WgIk) and Manuel Binna's [GitHub page](https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1).
40+
41+
An excellent book is [Professional CMake, A Practical Guide](https://crascit.com/professional-cmake/) by Craig Scott.
42+
43+
[Effective CMake](https://leanpub.com/effective-cmake), by Kai Wolf, is under development. Another book is under [development on GitHub](https://cliutils.gitlab.io/modern-cmake/).
44+
45+
46+
## Unit Testing
47+
48+
- Phil Nash is the author of the Catch C++ unit testing library. The Catch library is available at https://github.com/catchorg/Catch2.
49+
50+
## Boost
51+
52+
- The Boost libraries collection is a high quality set of C++ libraries, available at https://www.boost.org/.
53+
54+
## Documentation
55+
56+
- Diagrams in the Connective C++ documentation are created using [draw.io](https://www.draw.io/).
57+

0 commit comments

Comments
 (0)