The Co-dfns project aims to provide a high-performance, high-reliability compiler for a parallel extension of the Dyalog dfns programming language. The dfns language is a functionally oriented, lexically scoped dialect of APL. The Co-dfns language extends the dfns language to include explicit task parallelism with implicit structures for synchronization and determinism. The language is designed to enable rigorous formal analysis of programs to aid in compiler optimization and programmer productivity, as well as in the general reliability of the code itself.
Our mission is to deliver scalable APL programming to information and domain experts across many fields, expanding the scope and capabilities of what you can effectively accomplish with APL.
Documentation on Co-dfns can be found in the docs/ folder.
APL and Co-dfns can be a little different at first. I encourage you to contact me ([email protected]) for any questions you may have regarding either APL or Co-dfns.
Additionally, if you have general Dyalog APL inquiries, please do not hesitate to email Dyalog's support email: [email protected].
We are seeking to create an open funding model for Co-dfns research through user and patron contributions. You can support the project by contributing code, feedback, benchmarks, and so forth, but you can also directly support the Co-dfns project by funding the author:
https://www.patreon.com/arcfide
There are a number of related initiatives that are based on the Co-dfns technology:
- Mystika: a high-level, high-performance cryptographic stack
- apixlib: programmable, easy to use image processing
The following publications are either directly related to Co-dfns or talk about Co-dfns in their presentations.
Living The Loopless Life: Techniques For Removing Explicit Loops And Recursion, LambdaConf 2024
The Nano-parsing Architecture: Sane And Portable Parsing For Perverse Environments, LambdaConf 2024
Co-dfns Update 2023 // Aaron Hsu // Dyalog '23
U-Net CNN in APL: Exploring Zero-Framework, Zero-Library Machine Learning. ARRAY 2023.
Implementing the Convolutional Neural Network U-Net in APL, Dyalog User Meeting 2022
Text Processing in APL, Dyalog User Meeting 2022
Co-dfns Report, Dyalog User Meeting 2022
DSLs, Architecture, & Structural Design in APL, 3 ways by Aaron W Hsu #FnConf 2022
A Taste of GPU Compute, mentions Co-dfns
Modern APL in the Real World: Theory, Practice, Case Studies - λC 20 Global Edition
Programming Obesity: A Code Health Epidemic - FnConf 2019
Program Obesity: A Code Health Epidemic - λC 2019 Unconference
A Data Parallel Compiler Hosted on the GPU
Pragmatic Array Oriented Functional Programming @ JIO Talks
Live Reading/Writing Co-dfns, The Way of APL
Parallel-by-construction Tree Manipulation with APL - λC 2018 (Part 1 2)
Does APL Need a Type System? (FnConf '18)
Array-oriented Functional Programming
Tree Manipulation Workshop and Dyalog '18 Talk
Functional Array Funhouse Intensive - λC 2017 (Part 1 2 3 4 5)
APL Patterns vs. Anti-Patterns @ FunctionalConf 2017
APL Style: Patterns and Anti-patterns
Co-dfns Compiler Architecture and Design (Video)
The Key to a Data Parallel Compiler
Accelerating Information Experts Through Compiler Design
Co-dfns: Ancient Language, Modern Compiler
U11: Using Co-dfns to Accelerate APL Code
U07: Co-dfns Report: Performance and Reliability Prototyping