SPLASH 2023: Cutting-Edge Programming Language Research and Development
Table of Contents
- 1. SPLASH 2023
- 1.1. Is Wasm Becoming Garbage? (Keynote) sun
- 1.2. On the Applicability of Annotation-Based Source Code Modification in Kotlin (Work in Progress) sun
- 1.3. Evaluating YJIT's Performance in a Production Context: A Pragmatic Approach sun
- 1.4. Exploratory Study on Multi-User Program Synthesis: A Multi-Wizard Approach
- 1.5. Beyond Types for Dyadic Interaction mon
- 1.6. Generating Domain-Specific Programs for Diagram Authoring with Large Language Models mon
- 1.7. Periodic and Aperiodic Task Description Mechanisms in an FRP Language for Small-Scale Embedded Systems mon
- 1.8. Thorium: Verifiable, Dynamic, Reactive Software mon
- 1.9. Building Trust and Safety in Artificial Intelligence with Abstract Interpretation mon
- 1.10. Historiographer: Strongly-Consistent Distributed Reactive Programming with Minimal Locking mon
- 1.11. Complete First-Order Reasoning for Properties of Functional Programs mon
- 1.12. Abstract Interpretation in Industry - Experience and Lessons Learned mon
- 1.13. Lifting On-Demand Analysis to Higher-Order Languages mon
- 1.14. Behavioural up/down casting for statically typed languages mon
- 1.15. GPCE Tutorial - Compile-time generative programming for OCaml: flexible, safe and efficient mon
- 1.16. Symbolic transformation of expressions in modular arithmetic mon
- 1.17. Octagons Revisited - Elegant Proofs and Simplified Algorithms mon
- 1.18. A Brief Introduction to the Flix Programming Language mon
- 1.19. PAW: a programmable and visual audio workstation mon
- 1.20. CellPond: Spatial programming without escape mon
- 1.21. Revisiting Dynamic Dispatch for Modern Architectures mon
- 1.22. Session-Based Typechecking for Elixir Modules Using ElixirST mon
- 1.23. A Semantic Framework for Automatic Composition of Decentralised Industrial Control Schemes mon
- 1.24. A Logical Interpretation of Asynchronous Multiparty Compatibility mon
- 1.25. Relational Solver for Java Generics Type System mon
- 1.26. A Reusable Machine-Calculus for Automated Resource Analyses mon
- 1.27. Actix-Telepathy mon
- 1.28. Unfolding State Changes via Live State-First Debugging mon
- 1.29. Lude - build video games quickly mon
- 1.30. Automatically Generated Supernodes for AST Interpreters Improve Virtual-machine Performance mon
- 1.31. Empirical Study of the Docker Smell Impact tue conflang
- 1.32. Measuring Configuration in Code
- 1.33. Yes, Configuring is Good, But Have You Ever Tried Justifying?
- 1.34. Temporal Breakpoints for Multiverse sle
- 1.35. Cross-Level Debugging for Static Analysers sle
- 1.36. Cascade: a Meta-Language for Change, Cause and Effect
- 1.37. Large Language Models for Automated Program Repair
- 1.38. Predicate Anti-unification in (Constraint) Logic Programming
- 1.39. Utilizing the LSP to inform and teach users on config languages
- 1.40. Artificial Languages are Dead. Long Live Artificial Languages!
- 2. Notes
1. SPLASH 2023
1.1. Is Wasm Becoming Garbage? (Keynote) sun
1.1.1. Preparation Notes
- Familiarize yourself with WebAssembly basics
- Read up on garbage collection in programming languages
- Understand the current memory management in Wasm
- Consider implications of adding GC to Wasm
1.1.2. Example Wasm Code (WAT format)
(module
(func $allocate (param $size i32) (result i32)
;; Simple bump allocator, not garbage collected
(local $ptr i32)
(local.set $ptr (global.get $heap_top))
(global.set $heap_top
(i32.add (local.get $ptr) (local.get $size)))
(local.get $ptr)
)
(global $heap_top (mut i32) (i32.const 0))
)
1.2. On the Applicability of Annotation-Based Source Code Modification in Kotlin (Work in Progress) sun
1.7. Periodic and Aperiodic Task Description Mechanisms in an FRP Language for Small-Scale Embedded Systems mon
1.7.1. Preparation Notes
- Review Functional Reactive Programming (FRP) concepts
- Look into embedded systems programming challenges
- Understand the differences between periodic and aperiodic tasks
- Consider how FRP can be adapted for resource-constrained environments
1.7.2. Example FRP-style Code (Haskell)
import FRP.Yampa
-- Periodic task: blink an LED every second
blink :: SF () Bool
blink = proc _ -> do
time <- localTime -< ()
returnA -< (floor time `mod` 2 == 0)
-- Aperiodic task: respond to a button press
buttonResponse :: SF Bool String
buttonResponse = arr (\pressed -> if pressed then "Pressed!" else "")
-- Combine tasks
main = reactimate (return ())
(\_ -> getButtonState)
(\_ (led, msg) -> updateOutput led msg)
(blink &&& buttonResponse)
1.10. Historiographer: Strongly-Consistent Distributed Reactive Programming with Minimal Locking mon
1.15. GPCE Tutorial - Compile-time generative programming for OCaml: flexible, safe and efficient mon
1.20. CellPond: Spatial programming without escape mon
1.20.1. Preparation Notes
- Research cellular automata and spatial programming
- Look into dataflow programming models
- Understand the concept of "escape" in programming languages
- Consider how spatial programming can be applied to various domains
1.20.2. Example Cellular Automata-like Code (Python)
import numpy as np def cell_pond_step(grid): rows, cols = grid.shape new_grid = np.zeros((rows, cols)) for i in range(rows): for j in range(cols): neighbors = np.sum(grid[max(0,i-1):min(i+2,rows), max(0,j-1):min(j+2,cols)]) - grid[i,j] if grid[i,j] == 1: new_grid[i,j] = 1 if 2 <= neighbors <= 3 else 0 else: new_grid[i,j] = 1 if neighbors == 3 else 0 return new_grid # Initialize grid grid = np.random.choice([0, 1], size=(10, 10)) # Run simulation for _ in range(10): grid = cell_pond_step(grid) print(grid)