Welcome to Io development! This guide gets you up and running in minutes.
./setup.shThis script will check requirements, build Io, run tests, and set up your development environment.
If you prefer manual setup:
# 1. Clone with submodules
git clone --recursive https://github.com/IoLanguage/io.git
cd io
# 2. Build
make build # or: make debug for debug build
# 3. Test
make test
# 4. Start coding!
make replmake help # Show all available commands
make dev # Quick incremental build
make test # Run test suite
make format # Format C code
make check # Static analysismake b- Buildmake t- Testmake r- REPLmake c- Clean
# Run all tests
make test
# Run specific test
./build/_build/binaries/io libs/iovm/tests/correctness/ListTest.io
# Test samples
make test-all- Run tests:
make test - Check formatting:
make format - Run static analysis:
make check
The pre-commit hook will automatically run quick checks.
io/
├── libs/
│ ├── basekit/ # Foundation utilities
│ ├── coroutine/ # Coroutine implementation
│ ├── garbagecollector/ # Memory management
│ └── iovm/ # Virtual machine core
│ ├── source/ # C implementation
│ └── io/ # Io standard library
├── samples/ # Example programs
├── docs/ # Documentation
└── build/ # Build output (generated)
make debuggdb ./build/_build/binaries/io
(gdb) run script.iovalgrind --leak-check=full ./build/_build/binaries/io script.ioobj println # Print object
obj slotNames # Show slots
obj proto # Show prototype
thisContext # Current context
System backtrace # Stack tracegrep -r "IoObject_" libs/iovm/source/grep -r "method(" libs/iovm/io/ls libs/iovm/tests/correctness/*Test.io- Use tabs for indentation
- Pattern:
IoObjectName_methodName - Keep functions focused
- Use tabs for indentation
- camelCase for methods
- PascalCase for objects
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests
- Submit a pull request
See CONTRIBUTING.md for detailed guidelines.
- Start with small changes to understand the codebase
- Read existing tests for API examples
- The
samples/directory has many examples - Join discussions on GitHub Issues
- Ask questions! The community is helpful
- Official Guide
- CONTRIBUTING.md - Contribution guidelines
- README.md - General information
docs/- API documentation
- GitHub Issues for bugs/features
- GitHub Discussions for questions
- IRC: #io on irc.freenode.net
- Mailing list: iolanguage@googlegroups.com
Happy hacking! 🎉