News
C and JavaScript Repos PushedWritten on 10.06.26 by Alexi Turcotte Hey all! I just pushed two example repos to the org: one for JavaScript, and one for C, with a few constraints and examples in each, including the structure for setting up the fuzzing experiments as cargo examples. Shoot me an email if you can't see them, I may have misconfigured the org. I will… Read more Hey all! I just pushed two example repos to the org: one for JavaScript, and one for C, with a few constraints and examples in each, including the structure for setting up the fuzzing experiments as cargo examples. Shoot me an email if you can't see them, I may have misconfigured the org. I will push a few more changes to those tomorrow. If you haven't already, I'd recommend getting your code migrated soon! Best, |
Shared RepoWritten on 05.06.26 by Alexi Turcotte Hey all! You should have received invites to the shared repo; if not, shoot me an email. I will post in a few minutes material from this week's meeting, with a "checklist" of what exactly to put in your repo. You should have repo creation privilege, so please go ahead and create a repo in the… Read more Hey all! You should have received invites to the shared repo; if not, shoot me an email. I will post in a few minutes material from this week's meeting, with a "checklist" of what exactly to put in your repo. You should have repo creation privilege, so please go ahead and create a repo in the org titled according to your programming language. Best, |
Zoom LinkWritten on 05.06.26 by Alexi Turcotte Hey all, Here's the link: https://cispa-de.zoom-x.de/j/64740218751?pwd=fDFJ1auYERe71DI1zRiAaGbYOyVw6z.1 See you later! |
Zoom Meeting this FridayWritten on 01.06.26 by Alexi Turcotte Hey all! Since it's a holiday on Thursday, we will hold the seminar meeting over Zoom in case y'all wanted to head out of town and make it a long weekend. I'll post the material we discussed last day soon, and look forward to catching up with you! I will share a Zoom link a little later, after… Read more Hey all! Since it's a holiday on Thursday, we will hold the seminar meeting over Zoom in case y'all wanted to head out of town and make it a long weekend. I'll post the material we discussed last day soon, and look forward to catching up with you! I will share a Zoom link a little later, after I've posted the rest of the news. Best, |
Shared RepositoryWritten on 27.05.26 by Alexi Turcotte Hey all! I've been considering different options for how to allow y'all to see each other's progress and share your compiler testers, and I've settled on setting up a GitHub organization for the seminar and inviting you all to it. I'll post an "assignment" in which you can submit your GitHub… Read more Hey all! I've been considering different options for how to allow y'all to see each other's progress and share your compiler testers, and I've settled on setting up a GitHub organization for the seminar and inviting you all to it. I'll post an "assignment" in which you can submit your GitHub username, I will then invite you to the organization, and then you can create a repo for your language and migrate your code there. Also I have a few of your emails still to process, sorry again about the delay! Best, |
Week 5: Some Basic ConstraintsWritten on 25.05.26 by Alexi Turcotte Hey all! Hope you all had a nice long weekend. In a moment I will post some new material, a document with pointers for some C language constraints that should give you some inspiration and guidance when building up some simpler constraints for your language. I'll take a peek at the forum… Read more Hey all! Hope you all had a nice long weekend. In a moment I will post some new material, a document with pointers for some C language constraints that should give you some inspiration and guidance when building up some simpler constraints for your language. I'll take a peek at the forum tomorrow and answer any outstanding posts, and catch up on your emails as well. We will share a larger, shared repo with you tomorrow as well, as discussed on Friday. Best, |
Friday May 22 Meeting on ZoomWritten on 21.05.26 by Alexi Turcotte Howdy! Sorry for the short notice, but tomorrow we will meet at the usual time, but on Zoom: https://cispa-de.zoom-x.de/j/61800509104?pwd=6wv00wiDUDl8MKHlS7k20fxgt2sMmV.1 Looking forward to hearing about your adventures with your programming languages! I will get to some outstanding emails… Read more Howdy! Sorry for the short notice, but tomorrow we will meet at the usual time, but on Zoom: https://cispa-de.zoom-x.de/j/61800509104?pwd=6wv00wiDUDl8MKHlS7k20fxgt2sMmV.1 Looking forward to hearing about your adventures with your programming languages! I will get to some outstanding emails shortly. See ya tomorrow, |
Week 4: Composing Constraints and Generation GoalsWritten on 19.05.26 by Alexi Turcotte Hey all! I just added two new documents: one about how to compose constraints together and set up a basic NSGA-2 evolver (i.e., the multi-objective optimization algorithm, as when we have multiple constraints, we want to optimize for all of them), as well as one about how to set generation… Read more Hey all! I just added two new documents: one about how to compose constraints together and set up a basic NSGA-2 evolver (i.e., the multi-objective optimization algorithm, as when we have multiple constraints, we want to optimize for all of them), as well as one about how to set generation goals. I also updated the grammar document with some of the discussion we had last Friday. For this week, I'd like you to focus on getting your grammar working (if you haven't already), and running some preliminary experiments by generating lots of programs, trying to compile them, and seeing what sort of issues the compilers find with the programs. This will help you prioritize what behaviour to constrain, as well as help us identify general, generic issues that many languages face. Our discussion on Friday will centre around this. Also, if you're feeling particularly ambitious, you could try writing some really basic constraints to get more familiar with the design patterns. Remember: every line of Rust, every constraint you write will be easier than the last! Best, |
Week 3: Building or Adapting a GrammarWritten on 13.05.26 by Alexi Turcotte Howdy! I will add some new material in a few minutes which goes over some issues you may face when adapting a grammar into fandango-rs. The document has a walkthrough of me taking the JavaScript ANTLR grammar, using the fandango-py tooling to convert it, and step-by-step fixing issues and trying to… Read more Howdy! I will add some new material in a few minutes which goes over some issues you may face when adapting a grammar into fandango-rs. The document has a walkthrough of me taking the JavaScript ANTLR grammar, using the fandango-py tooling to convert it, and step-by-step fixing issues and trying to shed some light on the opaque error messages you will no doubt face. |
Your LanguagesWritten on 11.05.26 (last change on 11.05.26) by Alexi Turcotte Hey all! More info on developing your grammars is forthcoming, as well as a summary of Friday's discussion. As promised, here is the list of languages people are initially working on: Lea: Julia Hey all! More info on developing your grammars is forthcoming, as well as a summary of Friday's discussion. As promised, here is the list of languages people are initially working on: Lea: Julia BTW, let me know if you'd like to switch languages, from here on it'll be on a first come, first serve basis for language changes. |
Week 1 & 2 UpdatesWritten on 04.05.26 by Alexi Turcotte Howdy! Action Item: Please share your programming language rankings with us by Wednesday via submission in CMS. We'd like to finalize the language assignments by Friday. Hope you had a nice weekend! Besides the above action item, a few minor updates: 1. Updated the material for the Week 1 & 2… Read more Howdy! Action Item: Please share your programming language rankings with us by Wednesday via submission in CMS. We'd like to finalize the language assignments by Friday. Hope you had a nice weekend! Besides the above action item, a few minor updates: 1. Updated the material for the Week 1 & 2 Tasks (a few little fixes), and shared a PDF version of the slides instead of Keynote. 2. I will share a few more tutorial documents throughout the week, namely discussing combining constraints, generation goals, fixers, and the more advanced evolutionary algorithm. 3. The plan for this Friday is to first discuss the Week 1 & 2 Tasks, discuss programming language assignments, and I will then present some material on how to prepare a grammar for the language you will have chosen. 4. There's also now a forum set up in CMS. Best, Alexi |
Week 1 & 2 Slides and TasksWritten on 27.04.26 by Alexi Turcotte Hey all! 1. The slides from the meeting, and 2. A much more detailed document, walking you through setting up your first fandango-rs crate, as well as three tasks to complete, one thinking, one reading, and… Read more Hey all! 1. The slides from the meeting, and 2. A much more detailed document, walking you through setting up your first fandango-rs crate, as well as three tasks to complete, one thinking, one reading, and one implementing. Please read and work on these tasks before the next seminar meeting. While you go about getting your first crate up and running, think of a preferably ranked list of at least three programming languages you'd like to fuzz in this course. We will likely ask you to submit list before the seminar meeting next week so that we can ensure a good spread of unique programming languages. Besides that, if you encounter any insurmountable difficulties when following the tasks, particularly if the instructions are unclear or you struggle with implementing the extra constraint, let us know! Now, let's find tons of compiler bugs. |
Important: Register in LSF by May 15Written on 27.04.26 by Andreas Zeller Dear all, Please be reminded that you need to formally register for the seminar "exam" in LSF by May 15, 2026. Do not forget to do so; we'd suggest that you register right now. You can also always un-register by that date, should you find the seminar is not to your taste (and register again if… Read more Dear all, Please be reminded that you need to formally register for the seminar "exam" in LSF by May 15, 2026. Do not forget to do so; we'd suggest that you register right now. You can also always un-register by that date, should you find the seminar is not to your taste (and register again if your mood changes). However, be also reminded that we're always here to help you make your participation a success :-) Looking forward to working with you, Andreas + Alexi |
Twelve test generators for twelve programming languages
In this seminar, we will study and develop _test input generators_ for 12 statically typed programming languages, including Java, Go, Rust, Kotlin, Scala, Haskell, ML, and other languages of your choice.
At CISPA, we have developed test generators that produce test inputs in highly complex formats and languages. Recently, we have been successful in getting these generators to produce lots of valid and diverse C programs. We can feed these into a C compiler and see what happens. (Some compilers actually crash.)
Our method requires (1) a _grammar_ of the programming language in question (these are always already available), and (2) a set of _constraints_ that define rules such as definition before use, proper scoping, or basic type correctness. We already have such constraints in place for the C language. Since the rules do not vary much across languages, adapting the C rules to another programming language may take only a few days.
In this seminar, we will study different programming language concepts each week, with each participant focusing on applying that concept to the generator for their chosen language, and then discussing together how these concepts are realized. At the end of the seminar, your generator may be included in a high-profile scientific publication we plan to write in the summer, with you as a co-author!
Requirements: To be successful in this seminar, you need:
* basic knowledge of grammars, as you would typically have gained in introductions to computer science
* a good understanding of the semantics of programming languages, such as identifier usage, scoping, typing, and more.
Constraints are specified in Rust, so knowledge of Rust will be helpful. However, you will be able to learn Rust during the seminar.
Successful participation in "Security Testing" or equivalent knowledge of structured fuzzing is a plus.
