Skip to content

Create a doc/GLOSSARY.md file to define common terms used in the fuzzer #9

@devdanzin

Description

@devdanzin

We currently use a lot of jargon without much in the way of explanation. Having a glossary helps users and developers understand the docs and code. Here's a possible initial implementation:

# Lafleur Glossary

## A

**AST (Abstract Syntax Tree)**: A tree representation of the syntactic structure of Python code. Lafleur operates on ASTs rather than raw text to ensure syntactically valid mutations.

## C

**Child/Mutant**: A test case created by applying mutations to a parent test case.

**Corpus**: The collection of interesting test cases that have discovered unique coverage.

**Coverage Edge**: A transition between two micro-operations (uops) in the JIT trace, representing control flow.

## E

**Evolutionary Fuzzing**: A fuzzing approach where test cases evolve over time through mutation and selection based on fitness (coverage).

## H

**Harness**: A function that executes the test logic in a loop to trigger JIT compilation.

**Havoc**: A mutation strategy that applies many random transformations to create significantly different code.

## J

**JIT (Just-In-Time) Compiler**: CPython's experimental compiler that converts hot Python bytecode into machine code.

## L

**Lineage**: The chain of parent-child relationships from a test case back to its original seed.

**Lineage Coverage**: The union of all coverage discovered by a test case and all its ancestors.

## M

**Mutation**: A transformation applied to a test case to create a new variant.

## P

**Parent**: A test case selected from the corpus to be mutated.

## R

**Rare Event**: A JIT trace event that indicates unusual behavior (bailouts, failures, etc.).

## S

**Seed**: An initial test case, either generated by fusil or provided manually.

**Spam**: A mutation strategy that repeatedly applies the same transformation type.

**Sterile**: A parent that has been mutated many times without producing new coverage.

## T

**Test Case**: A Python script that exercises JIT behavior.

## U

**Uop (Micro-operation)**: A low-level operation in CPython's JIT intermediate representation.

Feel free to add more entries or modify suggested ones.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or requestgood first issueGood for newcomers

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions