Our great sponsors
Forscape | xvm | |
---|---|---|
20 | 110 | |
54 | 189 | |
- | 0.0% | |
5.3 | 9.8 | |
7 months ago | 4 days ago | |
C++ | Java | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Forscape
-
Why Wolfram uses square brackets for function calls
And if you like mathematical languages, you should check out Forscape :)
-
What's the best way to get my language stress tested?
You can use the free GitHub runners to execute regression tests on Linux, Windows, and Mac. I recommend testing with 32bit compilation as well as 64bit- it has a way of smoking out bugs. You could take a look at the GitHub actions on my Forscape repo in the .github folder, although it's probably not the most idiomatic runner scripting, but it is a C++ project like yours.
-
Word Processor from scratch WYSIWYG with Web Assembly
When I was developing a typesetting text editor for Forscape, I struggled to get traction until stumbling on the following plan: 1) Implement the document data structure and get it rendering to the screen 2) Support non-mutating interactions, such as clicking to move the text cursor, selecting, copying, etcetera 3) Support mutating interactions, such as keyboard input, deleting, and pasting. You'll probably use the Command pattern to support undo/redo of mutations
-
Which phases/stages does your programming language use?
The project is Forscape, although the language part is made a bit complicated because a goal of the project is creating an editor that supports typeset code with IDE interaction
-
[Weekly] What is everybody working on? Share your progress, discoveries, tips and tricks!
Finally adding multi-file support to Forscape. The frontend UI aspects are completed and I'm quite happy with the result. The app is Unicode heavy and QString's UTF-16 encoding is an annoyance; I would much prefer if Qt relied on std::string even. But the signal/slot mechanism lets you achieve some complicated behaviour with minimal complexity, and Qt looks great.
-
Build Qt Project w/GitHub Actions
Here's an example from a project. The first step installs Qt, the second step clones my repo on the runner, then a bit more setup with Conan, then building and running.
-
C++ Show and Tell - November 2022
I've been working on the Key CAS project (Imgur Screenshot), CAS being an acronym for Computer Algebra System, and "Key" a judiciously chosen title. This was my third time attempting CAS- this iteration was a huge improvement, but I still find it to be a damn hard problem. The GUI comes from the open source project Forscape, a scientific computing environment written in C++.
-
What Operators Do You WISH Programming Languages Had? [Discussion]
It gets fun when you go beyond flat symbols and start supporting 2D notation, like fractions and matrices. Probably not worth the hassle for most things, but I think it makes matrix expressions more compact with better readability.
-
What Are You Working On? August 29, 2022
I've been working on a mathematical programming language, Forscape. Currently it's entirely numerical, but I'm building a CAS separately which I hope to use in the language.
-
Forscape: what features are in your ideal scientific language?
Forscape is a scientific computing language in development. It supports first-class matrices and common matrix operations. The language reached a milestone when it achieved similar performance to other prominent scientific langs on a computationally involved numerical problem from my graduate school years. At this point, I am unsure where the development should go next and I would appreciate advice. What do you find missing in scientific computing languages? What are essential features that you need/enjoy?
xvm
-
Implementing arrays (and hash tables and ..) in a minimal ML with a C API
Have a look at the ecstasy library for the language definitions of these types.
-
Polymorphic static members
2) Funky interfaces: This is an Ecstasy interface that declares abstract static members (e.g. functions), which can then be implemented on any class and overridden on any sub-class, such that they can be invoked by type (instead of this), and virtually resolved (late bound at runtime) based on the type known at compile time. The best known example, of course, is Hashable, because it has to guarantee that a type implements both equals() and hashCode() on the same class, and the implementation is tied to the type, and not to the this. (C# added a similar feature last year in version 11.)
-
How do you parse function calls?
I'm just going to warn you in advance that invocation is one of the hardest things in the compiler to make easy. In other words, the nicer your language's "developer experience" is around invocation, the more hell you're going to have to go through to get there. The AST nodes for Name( (NameExpression) and Invoke( (InvocationExpression) alone are 7kloc in the Ecstasy implementation, for example -- but the result is well worth it.
-
What are some important differences between the popular versions of OOP (e.g. Java, Python) vs. the purist's versions of OOP (e.g. Smalltalk)?
Ecstasy uses message passing automatically behind the scenes for asynchronous calls, but the message passing isn't visible at the language level (i.e. there is no "message object" or something like that visible). Basically, all Ecstasy code is executing on a fiber inside a service, and services are all running concurrently, so from any service realm to any service realm, the communication is by message.
-
Is your language solving a real world problem?
Regarding Ecstasy, we did not set out to build a new language; we actually set out to solve a real world problem. Specifically, we wanted to be able to dramatically improve the density of workloads in data centers, by at least two orders of magnitude in the case of lightly used applications. Our initial goal was to create a runtime design that would support 10,000 stateful application instances on a single server. Let's call it the "a10k" problem 🤣 ... a tribute to the c10k problem from 1999. We refer to our goal as "zero carbon compute", i.e. we want to push the power and hardware cost for an application to as close to zero as possible; you can't reach zero, but you can get close. If we succeed, we will help reduce the electricity used in data centers over the next few decades by a significant percentage.
-
How do you tokenize multi char tokens.
Generally, left to right, one character at a time. If you’re looking for example code, here’s a simple hand-built lexer.
-
Have you written your own language in itself yet?
Parts of Ecstasy are now implemented in Ecstasy. Here's the Lexer, for example.
-
Top programming languages created in the 2010's on GitHub by stars
Ecstasy
-
What languages have been created *specifically* for the purpose of being JIT-compiled?
Ecstasy and the xvm were designed assuming an adaptive runtime compiler (similar in concept to the Hotspot compiler for Java), but not necessarily using a JIT.
-
What are you doing about async programming models? Best? Worst? Strengths? Weaknesses?
A Future reference has the various capabilities that you'd imagine, taking lambdas for thenDo(), whenComplete(), etc. The reference, in the above example, is a local variable, so you just obtain it using the C-style & operator:
What are some alternatives?
boba - A general purpose statically-typed concatenative programming language.
seed7 - Source code of Seed7
schmu - A WIP programming language inspired by ML and powered by LLVM
list-exp - Regular expression-like syntax for list operations [Moved to: https://github.com/phenax/elxr]
awesome-low-level-programming-languages - A curated list of low level programming languages (i.e. suitable for OS and game programming)
kuroko - Dialect of Python with explicit variable declaration and block scoping, with a lightweight and easy-to-embed bytecode compiler and interpreter.
Vale - Compiler for the Vale programming language - http://vale.dev/
TablaM - The practical relational programing language for data-oriented applications
Argon - Argon programming language
ghc - Mirror of the Glasgow Haskell Compiler. Please submit issues and patches to GHC's Gitlab instance (https://gitlab.haskell.org/ghc/ghc). First time contributors are encouraged to get started with the newcomers info (https://gitlab.haskell.org/ghc/ghc/wikis/contributing).
MLStyle.jl - Julia functional programming infrastructures and metaprogramming facilities
RustScript2 - RustScript is a functional scripting language with as much relation to Rust as Javascript has to Java.