# Python
__pycache__/
*.pyc
dist/
*.egg-info/

# clings runtime
.clings/
.clings-state.txt

# Editor / IDE
.devin/
.vscode/
.idea/
*.swp
*~

# OS
.DS_Store
Thumbs.db

# ─── C build artifacts ─────────────────────────────────
# Reference: GitHub official C.gitignore template
# https://github.com/github/gitignore/blob/main/C.gitignore

# Object files
*.o
*.ko
*.obj
*.elf

# Linker output
*.ilk
*.map
*.exp

# Precompiled Headers
*.gch
*.pch

# Libraries
*.lib
*.a
*.la
*.lo

# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib

# Executables
*.exe
*.out
*.app
*.i86
*.x86_64
*.hex

# Debug files
*.dSYM/
*.su
*.idb
*.pdb

# ─── Project-specific: compiled binaries without extension ───
# C exercises produce extension-less ELF binaries (e.g. dining_philosophers,
# rdt_stop_wait). Use whitelist strategy: ignore all, then un-ignore known sources.
#
# Known source extensions: .c .h .md .toml Makefile expected_output.txt
exercises/*/*
!exercises/*/*.c
!exercises/*/*.h
!exercises/*/*.md
!exercises/*/*.toml
!exercises/*/Makefile
!exercises/*/expected_output.txt

# Keep directory structure (git doesn't track empty dirs)
!exercises/lessons/
!exercises/nccl-cc/

# solutions/ is a git submodule — ignore rules are managed by its own repo
