The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning. Learn more →
Top 23 C++ programming-language Projects
-
carbon-lang
Carbon Language's main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
supercollider
An audio server, programming language, and IDE for sound synthesis and algorithmic composition.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
fut
Fusion programming language. Transpiling to C, C++, C#, D, Java, JavaScript, Python, Swift, TypeScript and OpenCL C.
-
cparse
A C++ configurable Expression Parser. Useful as a Calculator or for helping you write your own Programming Language
-
xl
A minimalist, general-purpose programming language based on meta-programming and parse tree rewrites
-
elena-lang
ELENA is a general-purpose language with late binding. It is multi-paradigm, combining features of functional and object-oriented programming. Rich set of tools are provided to deal with message dispatching : multi-methods, message qualifying, generic message handlers, run-time interfaces
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Solidity Solidity emerged as the first-ever programming language for smart contracts and remains the most extensively utilized language in the Web3 space due to its first-mover advantage. It serves as the primary language for developing applications today on Ethereum and Ethereum Virtual Machine (EVM) compatible blockchains, including Binance Smart Chain and Tron.
Link to the audio programming language / server they're using in the article: https://github.com/supercollider/supercollider
As far as I can tell, they aren't.
http://lua-users.org/wiki/SandBoxes
There is a lot of information there, but it doesn't handle resource exhaustion, execution time limits or give any guarantees. It does indicate that it's possible, and has a decent example of the most restrictive setup, which is a good start. But I would for example compare it with Luau's SECURITY.md.
From https://github.com/luau-lang/luau/blob/master/SECURITY.md:
> Luau provides a safe sandbox that scripts can not escape from, short of vulnerabilities in custom C functions exposed by the host. This includes the virtual machine and builtin libraries. Notably this currently does not include the work-in-progress native code generation facilities.
> Any source code can not result in memory safety errors or crashes during its compilation or execution. Violations of memory safety are considered vulnerabilities.
> Note that Luau does not provide termination guarantees - some code may exhaust CPU or RAM resources on the system during compilation or execution.
So, even luau will have trouble with untrusted code, but it specifies exactly what happens and so on. I think that's fair enough.
Project mention: Implementing a GPU's Programming Model on a CPU | news.ycombinator.com | 2023-10-14This so-called GPU programming model has existed many decades before the appearance of the first GPUs, but at that time the compilers were not so good like the CUDA compilers, so the burden for a programmer was greater.
As another poster has already mentioned, there exists a compiler for CPUs which has been inspired by CUDA and which has been available for many years: ISPC (Implicit SPMD Program Compiler), at https://github.com/ispc/ispc .
NVIDIA has the very annoying habit of using a lot of terms that are different from those that have been previously used in computer science for decades. The worst is that NVIDIA has not invented new words, but they have frequently reused words that have been widely used with other meanings.
SIMT (Single-Instruction Multiple Thread) is not the worst term coined by NVIDIA, but there was no need for yet another acronym. For instance they could have used SPMD (Single Program, Multiple Data Stream), which dates from 1988, two decades before CUDA.
Moreover, SIMT is the same thing that was called "array of processes" by C.A.R. Hoare in August 1978 (in "Communicating Sequential Processes"), or "replicated parallel" by Occam in 1985 or "PARALLEL DO" by "OpenMP Fortran" in 1997-10 or "parallel for" by "OpenMP C and C++" in 1998-10.
The only (but extremely important) innovation brought by CUDA is that the compiler is smart enough so that the programmer does not need to know the structure of the processor, i.e. how many cores it has and how many SIMD lanes has each core. The CUDA compiler distributes automatically the work over the available SIMD lanes and available cores and in most cases the programmer does not care whether two executions of the function that must be executed for each data item are done on two different cores or on two different SIMD lanes of the same core.
Project mention: Bare minimum atw-style K interpreter for learning purposes | news.ycombinator.com | 2024-01-17I've just learned that Ć is no longer a viable name (thankfully). Now it's Fusion Programming Language (or fut?) https://github.com/fusionlanguage/fut
There's an effort afoot to bring this to the Clojure world, with the lovely name jank: https://jank-lang.org
Project mention: How to create an embeddable python for multiple platforms | /r/cpp_questions | 2023-06-26
I looked into the jump table optimization. The normal Lua version is here[1] and it uses the opcode as a index into a static array to jump to the label. The “faster” Pluto version is here[2] and it just uses a switch statement on the labels. I would naively assume that these would compile to the same code because the lua version is just manually creating the jump table and the pluto version is leaving it to the compiler. How could the compiler optimize the switch so that would outperform the manual jump table (by a decent margin)?
[1] https://github.com/PlutoLang/Pluto/blob/main/src/ljumptabgcc...
[2] https://github.com/PlutoLang/Pluto/blob/main/src/ljumptab.h
From what I can read the author got really unlucky with some kind of radical API changes. Maybe at that time the LLVM team was a bit less serious with deprecations ?
I use LLVM since v9, nowadays I'm stuck on v15 (that's not because of LLVM btw).
Between the two versions there's been a radical change too, i.e "opaque pointers", but the transition was rather smooth as we were provided, for a long time, the two versions of the functions affected by the change. Maybe the LLVM team got more serious since the author experienced the said difficulties ?
Other thing I note is that the author uses the CPP API. I use the C one which exposes only a high-level subset of the CPP one. This encourages a saner use of LLVM, a more concrete separation between the front-end and the mid-end, although sometimes there are limitations.
A simple example of what encourages the C API, especially since opaque ptrs are added, is not to rely on LLVM to retrieve the IR type of an IR value. That should always be done using the AST, eg with an `.ir` field in your nodes.
Another one I remark, after a brief overview of LLVM-CRAP, is that the author had to change the internal data structure used, depending on the LLVM version [0]. Using the C API that would never had happened. The C API essentially allows to create block refs, instructions refs, value refs, type refs, contexts. Then you choose the containers you want to use to hold them. No need to switch to another stdcpp one, even if internally LLVM does so.
[0]: https://github.com/c3d/xl/blob/master/src/llvm-crap.cpp#L265
There are two official reference implementations of MiniScript: one in C#, and one in C++. Both are actively maintained, and available on GitHub.
Project mention: Looking for some compiler development resources | /r/ProgrammingLanguages | 2023-05-26See https://github.com/LensPlaysGames/Intercept/tree/machine_code/docs
C++ programming-language related posts
- Carbon Copy Newsletter No.2
- Cpp2 and cppfront – An experimental 'C++ syntax 2' and its first compiler
- A dynamically-typed, single-pass, recursive descent interpreter without an AST
- Garbage Collection for Systems Programmers
- Qore Programming Language
- Fast persistent recoverable log and key-value store
- Carbon Language Newsletter, the Carbon Copy, February 2024
-
A note from our sponsor - WorkOS
workos.com | 25 Apr 2024
Index
What are some of the best open-source programming-language projects in C++? This list will help you:
Project | Stars | |
---|---|---|
1 | carbon-lang | 32,188 |
2 | solidity | 22,263 |
3 | supercollider | 5,198 |
4 | luau | 3,595 |
5 | jakt | 2,747 |
6 | ispc | 2,402 |
7 | Beef | 2,362 |
8 | fut | 1,688 |
9 | Peregrine | 1,472 |
10 | fetlang | 1,476 |
11 | jank | 1,418 |
12 | pocketpy | 1,330 |
13 | Z-Sharp | 648 |
14 | Ark | 548 |
15 | swapview-rosetta | 491 |
16 | cparse | 327 |
17 | Pluto | 300 |
18 | gdl | 261 |
19 | xl | 242 |
20 | miniscript | 237 |
21 | elena-lang | 224 |
22 | LensorCompilerCollection | 182 |
23 | empirical-lang | 167 |
Sponsored