How do you make the execution fully reproducible
Hi! Very excited to see a new notebook alternative that is deterministic and builds graphs out of cells. How do you make the execution fully reproducible?
1 Reply
welcome! thanks for checking us out.
good question! there are a couple principles that make this happen:
1) execution order is determined by cells topological order. variables can not be redeclared, and using static analysis, we can detmerne hows the cells are ordered - we have a DAG in the kernel
2) whenever a cell changes or values of a cell's declared variables change, we also run all downstream cells. so no hidden state. the program is always up-to-date
let me know if i can dive deeper into any of that
---
coupled snippets from the docs:
Execution order. The order of cells on the page has no bearing on the order cells are executed in: execution order is completely determined by the variables cells define and the cells they read. You have full freedom over how to organize your code and tell your stories: move helper functions and other “appendices” to the bottom of your notebook, or put cells with important outputs at the top. No hidden state. marimo notebooks have no hidden state because the program state is automatically synchronized with your code changes and UI interactions. And if you delete a cell, marimo automatically deletes that cell’s variables, preventing painful bugs that arise in traditional notebooks.