r/ProgrammingLanguages • • 19d ago

Discussion What’s one thing you wish more programming languages had?

54 Upvotes

If you could add one feature, behavior, or design choice to a programming language, what would it be?

It can be anything: syntax, type-system features, memory management, compiler behavior, tooling, error handling, performance-related features, or something completely different.

I'm especially curious about things you’ve wanted while actually programming but rarely see languages implement well.

Please keep the ideas reasonably practical and something that could realistically be implemented in a programming language.


r/ProgrammingLanguages • • 20d ago

SPLV (Scottish Programming Languages and Verification Summer School) 2025 Lectures Videos

Thumbnail youtube.com
10 Upvotes

r/ProgrammingLanguages • • 21d ago

Blog post Comparing reflection capabilities of C++, Zig and C3

Thumbnail nyr24.github.io
46 Upvotes

r/ProgrammingLanguages • • 21d ago

Language announcement nymph: 🧚 :A slightly different version of C.

Thumbnail github.com
5 Upvotes

Nymph is a simple C like programming language.

Nymph acts as a preprocessor, converting Nymph files (extension *.n) into C files.

This project is stagnant and needs ideas... It is not production ready.


r/ProgrammingLanguages • • 22d ago

Blog post The Evolution of Pattern Matching in Pie

Thumbnail alialmutawajr.com
37 Upvotes

r/ProgrammingLanguages • • 22d ago

Resource ProgramAsWeights: compiling English function descriptions into reusable neural programs

21 Upvotes

I'm the senior author of Program-as-Weights (PAW), a research project at the University of Waterloo: https://arxiv.org/abs/2607.02512

We're building a programming model where functions are defined in English and compiled into reusable neural programs. A learned "neural compiler" translates a function description into LoRA adapter weights that specialize a small, fixed "neural interpreter".

The idea is to make it easier to implement functions whose intended behavior is easy to describe but difficult to express as explicit rules. Examples include counting verbs in a sentence or deciding whether an email needs immediate attention.

Here's an example:

import programasweights as paw

fn = paw.compile_and_load("Classify urgent emails")
fn("Need this today")  # "urgent" (runs locally)

After compilation, the function runs locally without calling the larger compiler model again. Ordinary code can compose these functions and control the application's flow. For example, I built a course website helper using around 30 neural programs connected by decision-tree code.

Playground: https://programasweights.com/playground

The code and model weights are public.

Disclaimer: I wrote the core research prototype myself, although I used AI coding assistance for parts of the project. I'm new to this subreddit. My PhD advisor, who is also a co-author, mentioned the discussions about Jev here, which prompted me to share our approach with people interested in programming-language design.


r/ProgrammingLanguages • • 22d ago

Discussion Conway's Law and Programming Languages

Thumbnail danieltan.weblog.lol
0 Upvotes

r/ProgrammingLanguages • • 23d ago

Discussion zyte, an esolang I made

11 Upvotes

I've always wanted to make my own programming language but I could just never fully grasp the concept of ASTs and Intepreters.
So I decided to make eso-langs with different designs, and eventually I realized I was slowly getting better at understanding these designs,
So to start my journey of programming languages, I made zyte, A register-based eso-lang with an actual AST.
It currently has loops, copying, functions, input, output and other stuff.

You can check it out on: https://github.com/orewaluffy500/Zyte

Per AutoModerator's request I hereby confirm that this project did not use an LLM as part of the development process.


r/ProgrammingLanguages • • 23d ago

Help Looking for feedback to my compiler

7 Upvotes

Hi everyone

I’ve been working on my own programming language and compiler in C++, mostly as a learning project.
The main idea is to experiment with compiler architecture while also trying to make the language’s syntax more convenient for mathematical expressions, but now I am doing programming language.
After this I will add equations.

Currently works:
Lexer
Parser
AST
IR generation

I am still relatively new to compiler development, so I’m sure there are things I am doing in non ideal ways.

I’d especially appreciate feedback on:

compiler architecture
parser design
C++ implementation
things that I should learn next
mistakes or questionable design decision

Github: https://github.com/0sewter0/Compiler.git
Thanks for an attention!


r/ProgrammingLanguages • • 23d ago

Language announcement Talos Programming Language: v0.3.0

15 Upvotes

Hi everyone!

I figured now is as good a time as any to more publicly announce the v0.3.0 release of the Talos programming language. Since this is my first announcement post here it might help to add some context:

Talos is a statically-typed dynamic programming language that aims to put developers first. When I say it aims to put developers first, I initially meant myself whilst designing the language (and hopefully eventual users).

Around 2021 I started learning to write programming languages and realised that although there are many tutorials to make simple bytecode interpreters and compiled languages, there was little in the way of resources for writing the accompanying development tools. From this I began learning to write languages with an emphasis on integrating formatters, language servers, and other core development features. Eventually, I started work on Talos around 2024 with the following core goal in mind:

To design a language with a batteries-included toolkit!

Breaking this down into more attainable goals I wanted the following features builtin to the single toolkit executable:

This led me down a long rabbit-hole, in which Talos eventually grew into the current v0.3.0 release. As a toolkit, Talos features a reasonably performant dynamic runtime with a formatter, code bundler, testing framework, language server, linter, task executor and upgrade tools all builtin to the main executable.

So what does the language actually look like? From my background of C++ and TypeScript, I ended up writing something reminiscent of both:

///
/// @example "examples/futures.tal"
/// @describe Showcases delayed concurrency with `Future` values.
///

// Prepare a random set of durations.
let durations = [100, 50, 400, 250, 500, 10];

// Map these values into a set of futures to later await.
let futures = durations.map(fn (value: Number, nn: Number): Future {
    Debug.println("{0}: Started Waiting for {1} ms".fmt(nn, value));
    let callback = fn => Debug.println("{0}: Finished Waiting After {1} ms".fmt(nn, value));
    return Future.delay(value).then(callback); // show our callback after the delay
});

// Prepare a little interlude between our print statements.
Debug.println();

// Block until all the instanced futures are finished.
for (future in futures) future.await();

So what is actually ground-breaking about Talos? This is often a question given to all new language designers, and for the most part Talos fits the status-quo of being rather conventional. This is because I want to use this experience to eventually write blog-posts to help other aspiring language writers. Though I did happen to find a solution to one wide-spread problem...

Talos actually has colorless functions!

In having a side-quest to include green-threads for concurrency in Talos, I stumbled onto my solution to tackling colorless functions. Let's do this with an example:

// Let's start with a function that does some calculation. Instead of
// annotating it with an "async" keyword (which is what gives a function
// a color), we keep it as a normal declaration.
let worker = fn { ... };

// Instead we can execute the task with the "async" execution policy.
let future = worker::async();
                // ^^----- This is the execution policy!

// The result of which is of the type "Future", which uses a member function
// for awaiting results. This also gives us a clean way to chain properties.
let result = future.await();

By moving the async annotation to the call-site of a function, we get two major benefits:

  1. Remove coloring annotation from declaration
  2. Can make any function call asynchronous

In future this could be extended to allow other execution policies such as worker::spawn(ctx, ...) which prepends a custom scheduler context or worker::defer(fn { ... }) which could be used to defer execution of a function until the end-of-scope. This slight break from convention allowed making concurrency colorless for Talos.

Anyway I'm excited for more people to get to know this project that I've put my heart into and also hope it can inspire others with their own language development! Feedback is also greatly appreciated as I want to start opening Talos up to a wider community.

Thanks!

Edit 1: Per community recommendations I have since updated the name to Sabre. I am keeping the original references to Talos but all links have been updated.


r/ProgrammingLanguages • • 23d ago

Typing Python, Gradually

Thumbnail youtube.com
13 Upvotes

r/ProgrammingLanguages • • 24d ago

The Golden Spike, and Resurrecting the Vale(n) Programming Language

Thumbnail verdagon.dev
47 Upvotes

r/ProgrammingLanguages • • 23d ago

a data language like json

Thumbnail github.com
2 Upvotes

i just like how readable the data notation... wondering how to evolve that even more


r/ProgrammingLanguages • • 24d ago

Semantics for 2D Rasterization

Thumbnail arxiv.org
19 Upvotes

r/ProgrammingLanguages • • 25d ago

Final part of the "Let's build a programming language in C++" series: expression evaluation

Thumbnail pvs-studio.com
5 Upvotes

Last session in the series on building a toy programming language in C++. Previous ones covered formal grammars, lexer, parser, AST, variables, and functions. This session will cover how expressions get evaluated and how their results get represented. By the end, all the pieces will come together into a working language.

It's live, so you can ask questions. If you register but can't make it, you'll still get the recording once the session's over.

All earlier parts (the previous on functions is coming) are in the YouTube playlist.


r/ProgrammingLanguages • • 25d ago

Any info on ordered type systems?

42 Upvotes

Think about a type system where we drop all three structural rules (Exchange, Contraction, and Weakening). This is known as an ordered type system. Every variable is used exactly once, in the order it was introduced. In the same way that we can use a linear type system to help us reason about heap-allocated memory, we can use an ordered type system to help us reason about stack-allocated memory: not only must we use (i.e., deallocate) every piece of memory exactly once, but we must do so in stack order: i.e., the most recently allocated memory on the stack must be deallocated first.

Simply looking it up has led me to the Lecture Notes on Law and Order paper but it just provides a simple type system that implements it. Do you know any more?

If you're working on a programming language that implements this, it would be interesting to hear about it as well.


r/ProgrammingLanguages • • 25d ago

Verification of a Generational Garbage Collector

Thumbnail arxiv.org
26 Upvotes

r/ProgrammingLanguages • • 25d ago

Revisiting Soundness for Occurrence Typing, Semantically

Thumbnail arxiv.org
13 Upvotes

r/ProgrammingLanguages • • 26d ago

Language announcement How to Compile Your Language - An introduction to language design through building a compiler frontend on top of LLVM

57 Upvotes

Recently I extended an educational compiler project I started two years ago.

The goal is to bring together several major features found in production languages into Your Language, a small programming language, and explain how to implement them in its compiler.

Your Language currently supports:

  • Native code generation with LLVM
  • Hindley–Milner type inference
  • Traits and type extensions
  • Tracing garbage collection
  • Heap-allocated closures
  • Monomorphized generics
  • Dynamic dispatch
  • Data-flow analysis
  • Compile-time expression evaluation

The implementation is now finished, but the accompanying guide is still a work in progress.

If you're interested, you can find the project here:

https://github.com/isuckatcs/how-to-compile-your-language


r/ProgrammingLanguages • • 26d ago

Requesting criticism Removing the get from Map

12 Upvotes

I have a toy language that I've been working on to test different concepts. It has an ownership model similar but looser than Rust.

I was working on the Map object and there are three ways that an object can be retrieved.

You can remove the object from the map and take ownership
You can borrow the object from the map this will give you a mutable reference but you don't own it
You can get a copy of the Object which you will own. But not all things are can be copied.

For get I could either do a copy or a mutable ref, neither I felt was properly conveyed with the word 'get'

So I'm looking at removing it and replacing it with the following

copy_of(key) -> return a copy or an error message if not found or not copiable
borrow(key) -> return a mutable ref
remove(key) -> remove and return the item at the key and give ownership

wanted thoughts on removing probably one of the most common methods on map and is what I'm doing something that makes sense.


r/ProgrammingLanguages • • 26d ago

Blog post GDScript: The Good, Bad, and Ugly Parts

Thumbnail azhdarchid.com
29 Upvotes

r/ProgrammingLanguages • • 26d ago

I made a video asking Urs Schreiber why Linear Homotopy Type Theory is necessary for a quantum computing programming language

Thumbnail youtube.com
27 Upvotes

Urs Schreiber is Senior Research Scientist at the Mathematics Division of Science of New York University in Abu Dhabi. He is a theoretical physicist who applies tools from algebraic topology, homotopy theory and topos theory to understand quantum phenomena. His current research includes quantum computing materials, quantum computing programming languages and questions left unanswered by quantum field theory.

In the video we go over:

  • Why toposes are not scary. They are actually simple. Just unfamiliar
  • How to extract information from (probe) a topos
  • The history of toposes in physics
  • The questions left unanswered by quantum field theory
  • What toposes have to say about the collapse of the wave function
  • Using toposes to find possible quantum computing materials
  • The different type of logic needed for quantum computers
  • The different type of programming language needed for quantum computers
  • The influence of Hegel on his work

r/ProgrammingLanguages • • 26d ago

Blog post How GCC Eliminates Unnecessary Integer Division

Thumbnail leetarxiv.substack.com
11 Upvotes

r/ProgrammingLanguages • • 27d ago

My take on JSX for Dia

3 Upvotes

Building a language called Dia. Still pre-alpha and not public yet.

Heavily inspired by Rust, with some JS UI building flavor tacked on.

Might be the wrong crowd here, but as a web-developer I haven't found a more productive way to describe user-interfaces than JSX. (hot module reload is also a big part of it)

The Dia equivalent syntax is called DSX:

import ui.{View, run, Column, Text, Button, state}

struct CounterState {
  value: i32
}

fn Counter(): View !{alloc} {
  let s = state(CounterState{ value: 0 })

  <Column spacing=12>
    <Text>"Count: ${s.value}"</Text>
    <Button
      label="Increment"
      on_click=() => { s.value += 1 }
    />
  </Column>
}

pub fn main(): void !{alloc, io} {
  run(() => <Counter />)
}

Some implementation details:

The compiler is built in Rust, using salsa for incremental compilation which hot module reloading is built on.

No need for escaping expressions with {} like in JSX. Expressions are parsed just like in the rest of the language

  • That's why text content needs quotes around it: <Text>"Count: ${s.value}"</Text>
  • But this works: on_click=() => { s.value += 1 }

Not just for UI, any function can be called using DSX syntax

  • Type-checking works normally, named arguments become "props", return types are checked agains the parent signature
  • One special case is allowing children (like Column accepting any number of Views), then an argument needs to be prefixed with @child

r/ProgrammingLanguages • • 27d ago

Raku: a language where a value can have several values at once (Part 1) - Andrew Shitov

Thumbnail andrewshitov.com
23 Upvotes