A programming language that automatically deletes functions that fail to meet their specified contracts during execution.
Vigil is a programming language that enforces extreme safety by automatically deleting functions that fail to meet their declared specifications during execution. It uses `implore` and `swear` statements to define preconditions and postconditions, and any violation results in the permanent removal of the offending code from the source file.
Developers and programming language enthusiasts interested in experimental languages, contract-based programming, and radical approaches to software correctness and bug elimination.
Vigil offers a unique, automated enforcement mechanism where buggy code is not just reported but actively removed, ensuring that only proven-correct code remains after multiple executions.
Vigil, the eternal morally vigilant programming language
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Vigil permanently deletes functions that violate their oaths during runtime, ensuring only correct code remains after multiple executions, as per its iterative removal process.
Using `implore` for preconditions and `swear` for postconditions, Vigil embeds specifications directly in code, making requirements clear and enforceable.
Vigil's syntax is very similar to Python, lowering the learning curve for developers familiar with Python, as noted in the README.
Offers a unique, thought-provoking approach to software safety by treating buggy code as morally corrupt and automatically purging it.
Automatically deletes source code on violations, which is irreversible and risky without backups, conflicting with standard development practices.
As a 2013 PLT Games entry, Vigil lacks libraries, IDE support, and a community, making it unsuitable for real-world applications.
When functions are deleted, there are no error messages or stack traces to aid in understanding failures, hindering development.
Deleting one function can cause callers to fail, leading to iterative deletions that might remove large code sections without clear resolution.