All Projects → nickzuber → infrared

nickzuber / infrared

Licence: MIT License
✨🚀 Blazing fast, inferred static type checker for JavaScript.

Programming Languages

ocaml
1615 projects

Projects that are alternatives of or similar to infrared

progge.rs
Program analysis playground for a simple, imperative language
Stars: ✭ 29 (-36.96%)
Mutual labels:  static-analysis, type-checking
IntelliJ-Luanalysis
Type-safe Lua IDE Plugin for IntelliJ IDEA
Stars: ✭ 118 (+156.52%)
Mutual labels:  static-analysis, type-checking
nightly-docker-rebuild
Use nightli.es 🌔 to rebuild N docker 🐋 images 📦 on hub.docker.com
Stars: ✭ 13 (-71.74%)
Mutual labels:  fast, productivity
FastBanner
🔥快速轮播图,支持自定义布局和使用自有图片显示组件
Stars: ✭ 27 (-41.3%)
Mutual labels:  fast
AHKCommandPicker
An AutoHotkey (AHK) script that allows you to easily run AHK functions. Instead of having to remember what shortcut key maps to each of your AHK scripts, this displays a list of all your AHK functions and allows you to easily run them.
Stars: ✭ 50 (+8.7%)
Mutual labels:  productivity
ethereum-dasm
An ethereum evm bytecode disassembler and static/dynamic analysis tool
Stars: ✭ 121 (+163.04%)
Mutual labels:  static-analysis
addlint
An example linter written with go/analysis for tutorial purposes
Stars: ✭ 49 (+6.52%)
Mutual labels:  static-analysis
WeekToDoWeb
WeekToDo is a free minimalist weekly planner app focused on privacy. Schedule your tasks and projects with to do lists and a calendar. Available for Windows, Mac, Linux or online.
Stars: ✭ 48 (+4.35%)
Mutual labels:  productivity
MissElizabethRobot
MashaRoBot : 📑Editor's choice
Stars: ✭ 43 (-6.52%)
Mutual labels:  fast
golintui
A simple terminal UI for Go linters
Stars: ✭ 73 (+58.7%)
Mutual labels:  static-analysis
toro
Tree oriented routing
Stars: ✭ 116 (+152.17%)
Mutual labels:  fast
sabotage
a radical and experimental distribution based on musl libc and busybox
Stars: ✭ 502 (+991.3%)
Mutual labels:  fast
rair-core
RAIR: RAdare In Rust
Stars: ✭ 63 (+36.96%)
Mutual labels:  static-analysis
downscale
Better image downscale with canvas.
Stars: ✭ 80 (+73.91%)
Mutual labels:  fast
illuaminate
Very WIP static analysis for Lua
Stars: ✭ 21 (-54.35%)
Mutual labels:  static-analysis
pahout
A pair programming partner for writing better PHP. Pahout means PHP mahout 🐘
Stars: ✭ 43 (-6.52%)
Mutual labels:  static-analysis
Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-60.87%)
Mutual labels:  fast
lz4-napi
Fastest lz4 compression library in Node.js, powered by napi-rs and lz4-flex.
Stars: ✭ 29 (-36.96%)
Mutual labels:  fast
jayhorn
Static checker for Java
Stars: ✭ 54 (+17.39%)
Mutual labels:  static-analysis
knowledge-base-content
Open-source knowledge base covering topics about developer experience.
Stars: ✭ 73 (+58.7%)
Mutual labels:  productivity

Infrared

Blazing fast, light-weight, inferred static type checker for JavaScript.

Infrared is an configurable & efficient static type checker for JavaScript. This is done by statically inferring a fluid type system onto your entire program – tracking the types of your variables as they change – and raising type errors before they happen at runtime.

What is a Fluid Type System?

A fluid type system is no foreign idea – its a forgiving set of typing rules that change as your program changes. This means no variables are ever committed to a single type – if that variable changes its type somewhere in the program, Infrared keeps track of it.

JavaScript is a dynamic language, and Infrared doesn't want to change that. While other type systems out there want you to change the way you program (and change your JavaScript into something else), Infrared does the opposite.

To understand the way Infrared fits into the typing ecosystem, consider the following:

  • If you're looking for a superset type system that tries to promote soundness, you should use Flow.
  • If you're looking for a superset type system that encourages unsoundness, you should use TypeScript.
  • If you don't want to change anything in your project, but still want to know the types of things in your program + have some type safety at compile time, you should use Infrared.

Planning, Roadmap, and What Lies Ahead

Infrared is a really big project, so naturally it's a pretty good idea to make sure we plan things out carefully to avoid a janky-mess.

I'm using Figma to organize the different sections and responsibilities of each part of Infrared (parser, compiler, server, etc.). Feel free to follow along and check out what I have mapped out so far.

Unfortunately, Figma only reflects the finalized parts of the development roadmap. This means there's a lot of cool work – like typing rules, reduction strategies, discrete proofs, etc – that aren't in this document.

Since those bits are written in a physical notebook, it's hard for me to share publically online. The good news is that I plan on writing a white paper once this project is finished, and all of the cool stuff will be included in there.

Until then, I'm more than happy to chat with anybody who's interested to learn more – feel free to reach out on Twitter.

FAQ

Q – Can I use this?

A – Not yet. This project is still under development, but expect an alpha release soon(ish)!

License

This software is free to use under the MIT License. See this reference for license text and copyright information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].