SPLASH 2023
Is Wasm Becoming Garbage? (Keynote) sun
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
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))
)
On the Applicability of Annotation-Based Source Code Modification in Kotlin (Work in Progress) sun
Evaluating YJIT's Performance in a Production Context: A Pragmatic Approach sun
Exploratory Study on Multi-User Program Synthesis: A Multi-Wizard Approach
Beyond Types for Dyadic Interaction mon
Generating Domain-Specific Programs for Diagram Authoring with Large Language Models mon
Periodic and Aperiodic Task Description Mechanisms in an FRP Language for Small-Scale Embedded Systems mon
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
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)
Thorium: Verifiable, Dynamic, Reactive Software mon
Building Trust and Safety in Artificial Intelligence with Abstract Interpretation mon
Historiographer: Strongly-Consistent Distributed Reactive Programming with Minimal Locking mon
Complete First-Order Reasoning for Properties of Functional Programs mon
Abstract Interpretation in Industry - Experience and Lessons Learned mon
Lifting On-Demand Analysis to Higher-Order Languages mon
Behavioural up/down casting for statically typed languages mon
GPCE Tutorial - Compile-time generative programming for OCaml: flexible, safe and efficient mon
Symbolic transformation of expressions in modular arithmetic mon
Octagons Revisited - Elegant Proofs and Simplified Algorithms mon
A Brief Introduction to the Flix Programming Language mon
PAW: a programmable and visual audio workstation mon
CellPond: Spatial programming without escape mon
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
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)
Revisiting Dynamic Dispatch for Modern Architectures mon
Session-Based Typechecking for Elixir Modules Using ElixirST mon
A Semantic Framework for Automatic Composition of Decentralised Industrial Control Schemes mon
A Logical Interpretation of Asynchronous Multiparty Compatibility mon
Relational Solver for Java Generics Type System mon
A Reusable Machine-Calculus for Automated Resource Analyses mon
Actix-Telepathy mon
Unfolding State Changes via Live State-First Debugging mon
Lude - build video games quickly mon
Automatically Generated Supernodes for AST Interpreters Improve Virtual-machine Performance mon
Empirical Study of the Docker Smell Impact tue conflang
Measuring Configuration in Code
Yes, Configuring is Good, But Have You Ever Tried Justifying?
Temporal Breakpoints for Multiverse sle
Cross-Level Debugging for Static Analysers sle
Cascade: a Meta-Language for Change, Cause and Effect
Large Language Models for Automated Program Repair
Predicate Anti-unification in (Constraint) Logic Programming
Utilizing the LSP to inform and teach users on config languages
Artificial Languages are Dead. Long Live Artificial Languages!