Why Sponsor Oils? | oilshell.org

Oil Blog Posts by Tag

See the blog index for a chronological list of posts.

Link to directly to a tag #FOO with tags.html#FOO.

#ASDL

2016-12-05 Type Checking vs. Metaprogramming; ML vs. Lisp
2016-12-11 What is Zephyr ASDL?
2016-12-16 Analogies for ASDL
2017-01-04 Success with ASDL
2017-01-06 ASDL Implementation and Use Cases
2017-01-09 What is oheap?
2017-01-21 Pretty Printing ASTs with ASDL, and Metaprogramming
2017-01-26 The Thinner Waist of the Interpreter
2019-02-07 How to Parse Shell Like a Programming Language
2019-02-18 OSH 0.6.pre15 Does Not Crave Chaos and Destruction
2019-12-09 Oil 0.7.pre9 and a Fast Shell Parser
2020-04-19 Oil 0.8.pre4 - The Biggest Shell Programs in the World
2020-05-25 Oil 0.8.pre5 - Progress in C++
2023-03-16 Oil 0.14.2 - Interactive Shell, and Conceding to autoconf
2023-03-25 Oils Roadmap: What We Can Use Help With
2024-05-14 Notes for Houston Functional Programmers Talk

#awk

2016-11-13 Shell, Awk, and Make Should Be Combined
2016-11-14 Example Code in Shell, Awk, and Make
2017-10-25 Comments About Shell, Awk, and Make
2020-11-08 More Changes to Oil's Syntax
2023-06-11 Sketches of YSH Features

#bernstein-chaining

2017-01-13 Shell Has a Forth-like Quality
2017-01-31 Bernstein Chaining of ssh and su

#blog-meta

2016-10-10 What Oil Looks Like, and a Plan for This Blog
2016-10-15 Blog Roadmap, and Project Roadmap
2016-11-20 Blog Retrospective #1
2016-12-29 Using Reddit for Blog Comments
2017-04-20 Switching to "Twitter Mode"
2017-04-21 Blog Retrospective #2
2017-09-19 How to Quickly and Correctly* Generate a Git Log in HTML
2017-10-24 Status Update: Parser Correctness and Performance
2017-11-30 Blog Retrospective #3
2018-01-31 Popular Posts with Many Comments
2018-03-25 I'm Attending Recurse Center this Summer
2019-02-07 How to Parse Shell Like a Programming Language
2020-01-12 Blog Roadmap for January 2020
2020-07-19 Summer 2020 Blog Roadmap
2021-01-05 Blog Roadmap for January 2021
2021-07-19 Blog Review: Distributed Systems
2021-11-30 Winter Blog Backlog: Recent Progress
2021-12-01 Appendix: The Journey of Extended Globs
2021-12-31 Retrospective: Software Architecture
2023-06-08 Reviewing YSH
2023-11-30 Winter Status Update

#blog-topics

2017-01-19 On the Wiki: Project Goals and Related Projects
2017-02-26 Status Update and Blog Backlog
2017-05-31 Post-Vacation Update and Build System Observations
2017-07-31 Post-Release Blog Topics
2017-10-24 Status Update: Parser Correctness and Performance
2017-10-25 Comments About Shell, Awk, and Make
2017-11-30 Blog Retrospective #3
2018-07-22 Summer Blog Topics
2018-10-11 Release of OSH 0.6.pre5
2018-11-15 Dev Log #7: Hollowing Out the Python Interpreter
2018-12-16 Dev Log #9: Progress on Oil Subprojects
2019-06-13 What's Happened Since February?
2019-10-04 You Can Now Try the Oil Language
2020-01-12 Blog Roadmap for January 2020
2020-01-14 The Simplest Explanation of Oil
2020-01-16 Oil's Parser is 160x to 200x Faster Than It Was 2 Years Ago
2020-02-19 Four More Posts in "Shell: The Good Parts"
2020-02-20 February Recap / Brain Dump
2020-03-08 Metrics for Oil 0.8.pre2
2020-07-19 Summer 2020 Blog Roadmap
2020-07-21 Comments on Eggex and Regular Languages
2020-08-17 Technical Issues And Risks
2020-10-22 Four Features That Justify a New Unix Shell
2021-01-05 Blog Roadmap for January 2021
2021-06-08 Recent Progress on the Oil Language
2021-07-08 Summer Blog Backlog: Understanding and Using Shell
2021-07-09 Summer Blog Backlog: Distributed Systems
2022-01-30 January Release Notes and Themes
2022-05-10 Brief Descriptions of a Python to C++ Translator
2023-06-17 Narrow Waists Can Be Interior or Exterior: PyObject vs. Unix Files
2023-08-02 Oils 0.17.0 - YSH Is Becoming Real
2023-11-30 Winter Status Update
2024-02-21 Oils 0.20.0 - Eggex, JSON, and Android

#boil

2017-05-05 Rewriting Python's Build System From Scratch
2017-05-31 Post-Vacation Update and Build System Observations

#book-reviews

2018-11-30 What Is a Data Frame? (In Python, R, and SQL)

#cloud

2021-04-11 Comments About Build Systems and CI Services
2021-07-19 Blog Review: Distributed Systems

#comic

2018-04-26 oil-dev is moving to Zulip
2020-01-14 The Simplest Explanation of Oil
2020-04-02 Three Comics For Understanding Unix Shell

#comments

2021-01-06 Comments About Parsing: Theory vs. Practice
2021-01-24 Shell Scripts Are Executable Documentation
2021-01-25 Shell Scripts, Audio, Images, and 3D Graphics
2021-01-26 Unix Shell: Philosophy, Design, and FAQs
2021-04-09 Oil Doesn't Require Quoting Everywhere
2021-04-10 find and test: How To Read And Write Them
2021-04-11 Comments About Build Systems and CI Services
2021-04-13 Release of Oil 0.8.9
2021-07-09 Summer Blog Backlog: Distributed Systems
2021-07-19 Blog Review: Distributed Systems
2021-08-06 Unix Shell: History and Trivia
2021-08-21 An Opinionated Guide to xargs
2021-12-07 Backlog: Rough Progress Assessments
2021-12-20 Backlog: Language FAQs
2022-03-12 A Sketch of the Biggest Idea in Software Architecture
2022-05-05 Oil 0.10.0 - Can Unix Shell Error Handling Be Fixed Once and For All?
2023-11-30 Winter Status Update
2024-03-21 Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed
2024-06-17 Comments on Scripting, CGI, and FastCGI
2024-09-10 After 8 Years, Oils Is Still Small and Flexible

#computer-science

2016-10-20 Parsing Bash is Undecidable
2016-11-01 Pratt Parsing and Precedence Climbing Are the Same Algorithm
2016-11-03 Pratt Parsing Without Prototypal Inheritance, Global Variables, Virtual Dispatch, or Java
2016-12-05 Type Checking vs. Metaprogramming; ML vs. Lisp
2017-02-11 From AST to Lossless Syntax Tree
2017-03-31 Pratt Parsing Index and Updates
2017-04-22 Code for the Shunting Yard Algorithm, and More
2019-02-07 How to Parse Shell Like a Programming Language
2020-07-21 Comments on Eggex and Regular Languages
2020-07-22 Regular Languages, Part 2: Ideas and Questions
2020-12-23 Three Great Videos About Regex Derivatives
2024-05-14 Notes for Houston Functional Programmers Talk

#containers

2021-07-19 Blog Review: Distributed Systems
2021-12-31 Retrospective: Software Architecture
2022-01-30 January Release Notes and Themes

#coprocess

2018-12-05 Dev Log #8: Shell Protocol Designs
2021-04-13 Release of Oil 0.8.9

#correction

2017-11-28 Correction: How to Parse Here Documents

#data-structures

2016-11-29 Status Update: the Backbone of the Interpreter
2017-02-11 From AST to Lossless Syntax Tree

#distributed-systems

2017-01-19 On the Wiki: Project Goals and Related Projects
2019-01-18 BayLISA Presentation Materials
2020-11-23 Fixes and Updates to Oil Benchmarks
2021-04-11 Comments About Build Systems and CI Services
2021-07-09 Summer Blog Backlog: Distributed Systems
2021-07-19 Blog Review: Distributed Systems
2021-12-31 Retrospective: Software Architecture
2022-02-26 The Internet Was Designed With a Narrow Waist
2022-03-12 A Sketch of the Biggest Idea in Software Architecture

#donations

2022-03-31 Oil Is Being Implemented "Middle Out"

#eggex

2019-12-22 Eggex Example: Recognizing Python Integer Literals
2020-07-21 Comments on Eggex and Regular Languages
2020-07-22 Regular Languages, Part 2: Ideas and Questions
2020-11-08 More Changes to Oil's Syntax
2020-11-09 Proposed Changes to Oil's Syntax
2020-12-23 Three Great Videos About Regex Derivatives
2022-08-24 Oil 0.12.4 - User Feedback
2024-02-21 Oils 0.20.0 - Eggex, JSON, and Android

#escaping-quoting

2017-01-31 Bernstein Chaining of ssh and su
2017-08-31 Problems With the test Builtin: What Does -a Mean?
2017-09-19 How to Quickly and Correctly* Generate a Git Log in HTML
2017-09-29 Git Log in HTML: A Harder Problem and A Safe Solution
2018-02-14 CommonMark is a Useful, High-Quality Project
2020-02-27 Oil Doesn't Confuse Flags and Files (Code and Data)
2020-10-31 Big Changes to the Oil Language
2024-05-14 Notes for Houston Functional Programmers Talk

#event

2019-01-14 I'm Speaking About the Oil Shell this Thursday in San Jose, California
2019-01-18 BayLISA Presentation Materials
2021-06-05 Notes on the HotOS Unix Shell Panel
2024-05-14 Notes for Houston Functional Programmers Talk

#FAQ

2018-01-28 Why Create a New Unix Shell?
2018-03-04 Building Oil with the OPy Bytecode Compiler
2019-06-17 Frequently Asked Questions (2019)
2021-01-26 Unix Shell: Philosophy, Design, and FAQs
2021-01-27 Why Create a New Unix Shell? (2021)
2021-02-11 Updates to the Oil FAQ
2021-12-02 Backlog: Explaining the Oil Project
2021-12-07 Backlog: Rough Progress Assessments
2021-12-20 Backlog: Language FAQs
2022-03-31 Oil Is Being Implemented "Middle Out"
2022-05-10 Brief Descriptions of a Python to C++ Translator
2023-03-26 Oils 2023 FAQ
2023-03-31 Reasons for the Big Renaming to Oils, OSH, and YSH
2023-06-20 Oils Is Exterior-First (Code, Text, and Structured Data)

#hay

2022-07-28 Oil 0.11.0 - Big Features and Project Changes

#headless

2021-06-05 Notes on the HotOS Unix Shell Panel
2023-05-13 Oils 0.15.0 - Big Contributions and More Concessions
2023-06-24 Oils 0.16.0 - Breaking Renames and YSH
2023-09-17 Oils 0.18.0 - Progress on All Fronts
2023-12-21 Interactive Shell Screencasts

#interactive-shell

2018-10-10 Running Bash Completion Scripts with OSH
2018-10-11 Release of OSH 0.6.pre5
2018-12-05 Dev Log #8: Shell Protocol Designs
2018-12-16 Dev Log #9: Progress on Oil Subprojects
2019-02-05 Success With the Interactive Shell
2020-01-17 Oil Uses Its Parser For History And Completion
2020-01-18 Oil's Parser Doesn't Worry About Aliases and Prompts
2022-01-30 January Release Notes and Themes
2023-03-16 Oil 0.14.2 - Interactive Shell, and Conceding to autoconf
2023-06-24 Oils 0.16.0 - Breaking Renames and YSH
2023-09-17 Oils 0.18.0 - Progress on All Fronts
2023-12-21 Interactive Shell Screencasts

#j8-notation

2023-06-11 Sketches of YSH Features
2023-06-15 How to Create a UTF-16 Surrogate Pair by Hand, with Python
2023-06-20 Oils Is Exterior-First (Code, Text, and Structured Data)
2024-02-21 Oils 0.20.0 - Eggex, JSON, and Android
2024-03-21 Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed
2024-06-19 Oils 0.22.0 - Docs, Pretty Printing, Nix, and Zsh

#lexing

2016-10-19 How OSH Uses Lexer Modes
2017-12-15 The Oil Lexer: Introduction and Recap
2017-12-17 When Are Lexer Modes Useful?
2019-02-07 How to Parse Shell Like a Programming Language
2019-12-22 Eggex Example: Recognizing Python Integer Literals
2020-04-19 Oil 0.8.pre4 - The Biggest Shell Programs in the World
2020-07-22 Regular Languages, Part 2: Ideas and Questions
2020-12-23 Three Great Videos About Regex Derivatives
2021-04-10 find and test: How To Read And Write Them

#linux-distro

2016-10-11 Oil Can Parse Real Shell Programs
2018-01-15 Success with Aboriginal, Alpine, and Debian Linux
2020-01-22 Ambitions for a Unix Shell

#make

2016-11-13 Shell, Awk, and Make Should Be Combined
2016-11-14 Example Code in Shell, Awk, and Make
2017-05-05 Rewriting Python's Build System From Scratch
2017-05-31 Post-Vacation Update and Build System Observations
2017-10-25 Comments About Shell, Awk, and Make
2021-04-11 Comments About Build Systems and CI Services
2023-06-11 Sketches of YSH Features

#metaprogramming

2016-11-30 A Problem with Type Checking
2016-12-05 Type Checking vs. Metaprogramming; ML vs. Lisp
2017-01-21 Pretty Printing ASTs with ASDL, and Metaprogramming
2024-05-14 Notes for Houston Functional Programmers Talk

#metrics

2016-10-10 What Oil Looks Like, and a Plan for This Blog
2017-01-26 The Thinner Waist of the Interpreter
2017-03-23 Measuring Progress with Tests
2017-06-02 Project Metrics
2017-09-09 Please Try the OSH 0.1 Release
2020-01-16 Oil's Parser is 160x to 200x Faster Than It Was 2 Years Ago
2020-03-08 Metrics for Oil 0.8.pre2
2020-05-25 Oil 0.8.pre5 - Progress in C++
2020-08-12 A Plan for Oil 0.8 and 0.9
2020-11-07 Metrics for Oil 0.8.4
2020-11-23 Fixes and Updates to Oil Benchmarks
2021-03-19 Release of Oil 0.8.8
2022-03-31 Oil Is Being Implemented "Middle Out"

#misc

2016-12-23 A Math Problem: Function-Directed Enum Labeling
2016-12-26 Four Functions and Enum Labelings
2016-12-27 Bespoke Superoptimization
2016-12-30 Questions about Superoptimization

#mycpp

2019-06-13 What's Happened Since February?
2020-03-05 March Recap / Link Dump
2021-03-19 Release of Oil 0.8.8
2022-03-31 Oil Is Being Implemented "Middle Out"
2022-05-10 Brief Descriptions of a Python to C++ Translator
2022-05-29 A Garbage-Collected Heap in C++, Shaped Like Typed Python
2022-10-20 Oil 0.12.7 - Garbage Collector Problems
2023-01-11 Pictures of a Working Garbage Collector
2023-03-16 Oil 0.14.2 - Interactive Shell, and Conceding to autoconf
2023-03-25 Oils Roadmap: What We Can Use Help With
2024-03-21 Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed
2024-06-19 Oils 0.22.0 - Docs, Pretty Printing, Nix, and Zsh
2024-09-13 A Retrospective on the Oils Project

#oheap

2017-01-09 What is oheap?
2017-12-22 OSH 0.3 - Optimization, Benchmarks, and Bug Fixes
2018-08-19 Release of OSH 0.6.pre2
2018-12-16 Dev Log #9: Progress on Oil Subprojects

#oil-dev

2016-11-19 Oil is on Github
2017-01-26 The Thinner Waist of the Interpreter
2017-03-04 If you have Debian/Ubuntu, and Five Minutes
2017-03-09 Oil-dev is Alive!
2017-03-23 Measuring Progress with Tests
2017-06-22 How I Use Tests
2017-06-24 How I Plan to Use Tests: Transforming OSH
2018-04-26 oil-dev is moving to Zulip
2019-06-13 What's Happened Since February?
2019-12-09 Oil 0.7.pre9 and a Fast Shell Parser
2020-03-05 March Recap / Link Dump
2020-07-19 Summer 2020 Blog Roadmap
2024-02-21 Oils 0.20.0 - Eggex, JSON, and Android

#oil-language

2016-11-06 Thirteen Incorrect Ways and Two Awkward Ways to Use Arrays
2016-11-07 Contrived Example Found in the Wild
2016-11-18 Problems With $((
2016-11-30 A Problem with Type Checking
2017-02-05 Translating Shell to Oil
2017-02-06 Translating Shell to Oil, Part Two
2017-09-29 Git Log in HTML: A Harder Problem and A Safe Solution
2018-01-28 Why Create a New Unix Shell?
2019-06-17 Frequently Asked Questions (2019)
2019-08-22 Oil Language Design Notes #1
2019-10-04 You Can Now Try the Oil Language
2020-01-14 The Simplest Explanation of Oil
2020-01-22 Ambitions for a Unix Shell
2020-02-27 Oil Doesn't Confuse Flags and Files (Code and Data)
2020-03-05 March Recap / Link Dump
2020-08-12 A Plan for Oil 0.8 and 0.9
2020-10-22 Four Features That Justify a New Unix Shell
2020-10-31 Big Changes to the Oil Language
2020-11-08 More Changes to Oil's Syntax
2020-11-09 Proposed Changes to Oil's Syntax
2020-11-10 Changes to Shell Runtime Semantics
2021-01-27 Why Create a New Unix Shell? (2021)
2021-02-11 Updates to the Oil FAQ
2021-04-13 Release of Oil 0.8.9
2021-06-08 Recent Progress on the Oil Language
2021-08-06 Unix Shell: History and Trivia
2021-08-21 An Opinionated Guide to xargs
2021-09-19 Oil Has Multi-line Commands and String Literals
2021-11-30 Winter Blog Backlog: Recent Progress
2021-12-20 Backlog: Language FAQs
2021-12-31 Retrospective: Software Architecture
2022-07-28 Oil 0.11.0 - Big Features and Project Changes
2022-08-24 Oil 0.12.4 - User Feedback
2023-03-25 Oils Roadmap: What We Can Use Help With

#oil-release

2017-07-23 Please Try the First OSH Release
2017-09-09 Please Try the OSH 0.1 Release
2017-11-10 OSH 0.2 - Parsing One Million Lines of Shell
2017-12-22 OSH 0.3 - Optimization, Benchmarks, and Bug Fixes
2018-02-03 OSH 0.4 - A Shell Language That's Nearly Feature Complete
2018-04-30 Release of OSH 0.5.alpha3
2018-07-23 OSH 0.5 - A Release with Many Contributors
2018-08-15 Summer Vacation is Over!
2018-08-19 Release of OSH 0.6.pre2
2018-10-11 Release of OSH 0.6.pre5
2018-11-15 Dev Log #7: Hollowing Out the Python Interpreter
2018-12-16 Dev Log #9: Progress on Oil Subprojects
2019-01-18 BayLISA Presentation Materials
2019-02-05 Success With the Interactive Shell
2019-02-18 OSH 0.6.pre15 Does Not Crave Chaos and Destruction
2019-06-13 What's Happened Since February?
2019-07-19 Release of OSH 0.7.pre1
2019-10-04 You Can Now Try the Oil Language
2019-12-09 Oil 0.7.pre9 and a Fast Shell Parser
2020-02-20 February Recap / Brain Dump
2020-03-05 March Recap / Link Dump
2020-03-08 Metrics for Oil 0.8.pre2
2020-03-25 Oil 0.8.pre3 - A Line Editor and a Continuous Build
2020-04-19 Oil 0.8.pre4 - The Biggest Shell Programs in the World
2020-05-25 Oil 0.8.pre5 - Progress in C++
2020-06-18 Oil 0.8.pre6 - Pure Bash and C++
2020-08-12 A Plan for Oil 0.8 and 0.9
2020-10-31 Big Changes to the Oil Language
2020-11-07 Metrics for Oil 0.8.4
2021-03-19 Release of Oil 0.8.8
2021-04-13 Release of Oil 0.8.9
2021-07-07 Release of Oil 0.8.12
2021-11-20 Oil 0.9.4 - User Feedback
2021-11-30 Winter Blog Backlog: Recent Progress
2022-01-30 January Release Notes and Themes
2022-05-05 Oil 0.10.0 - Can Unix Shell Error Handling Be Fixed Once and For All?
2022-07-28 Oil 0.11.0 - Big Features and Project Changes
2022-08-24 Oil 0.12.4 - User Feedback
2022-10-20 Oil 0.12.7 - Garbage Collector Problems
2023-03-16 Oil 0.14.2 - Interactive Shell, and Conceding to autoconf
2023-05-13 Oils 0.15.0 - Big Contributions and More Concessions
2023-06-24 Oils 0.16.0 - Breaking Renames and YSH
2023-08-02 Oils 0.17.0 - YSH Is Becoming Real
2023-09-17 Oils 0.18.0 - Progress on All Fronts
2024-01-16 Oils 0.19.0 - Dicts, Procs, Funcs, and Places
2024-02-21 Oils 0.20.0 - Eggex, JSON, and Android
2024-03-21 Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed
2024-06-19 Oils 0.22.0 - Docs, Pretty Printing, Nix, and Zsh
2024-11-13 Oils 0.23.0 - Writing YSH Code, User Feedback, and Bug Bounty

#opy

2017-04-09 An Unexpected Solution: Cobbling Together a Python Interpreter
2017-04-23 The OPy Front End is Working
2017-06-24 How I Plan to Use Tests: Transforming OSH
2018-03-04 Building Oil with the OPy Bytecode Compiler
2018-03-27 Addendum: Two Recurse Center Projects That Explain CPython
2018-12-16 Dev Log #9: Progress on Oil Subprojects
2019-12-09 Oil 0.7.pre9 and a Fast Shell Parser

#osh-language

2020-10-22 Four Features That Justify a New Unix Shell
2021-11-30 Winter Blog Backlog: Recent Progress
2021-12-01 Appendix: The Journey of Extended Globs
2021-12-20 Backlog: Language FAQs
2023-03-16 Oil 0.14.2 - Interactive Shell, and Conceding to autoconf
2023-03-25 Oils Roadmap: What We Can Use Help With
2023-03-26 Oils 2023 FAQ
2023-09-17 Oils 0.18.0 - Progress on All Fronts

#osh-to-oil

2017-02-05 Translating Shell to Oil
2017-02-06 Translating Shell to Oil, Part Two

#OVM

2017-04-09 An Unexpected Solution: Cobbling Together a Python Interpreter
2017-04-25 OVM will be a Slice of the CPython VM
2017-05-05 Rewriting Python's Build System From Scratch
2017-06-24 How I Plan to Use Tests: Transforming OSH
2018-03-04 Building Oil with the OPy Bytecode Compiler
2018-11-15 Dev Log #7: Hollowing Out the Python Interpreter
2018-12-16 Dev Log #9: Progress on Oil Subprojects

#parsing

2016-10-20 Parsing Bash is Undecidable
2016-10-22 New Terminology: Static Parsing vs. Dynamic Parsing
2016-11-01 Pratt Parsing and Precedence Climbing Are the Same Algorithm
2016-11-02 Review of Pratt/TDOP Parsing Tutorials
2016-11-03 Pratt Parsing Without Prototypal Inheritance, Global Variables, Virtual Dispatch, or Java
2016-11-05 Pratt Parsers Can Be Statically Typed
2016-11-17 OSH Can Be Parsed With Two Tokens of Lookahead
2017-02-11 From AST to Lossless Syntax Tree
2017-03-30 Precedence Climbing is Widely Used
2017-03-31 Pratt Parsing Index and Updates
2017-04-22 Code for the Shunting Yard Algorithm, and More
2021-01-06 Comments About Parsing: Theory vs. Practice

#parsing-shell

2016-10-12 [ Is a Builtin, But [[ Is Part of the Language
2016-10-13 OSH Parses Shell Scripts Up Front in a Single Pass. Other Shells Don't.
2016-10-17 How to Parse Here Documents
2016-10-19 How OSH Uses Lexer Modes
2016-10-20 Parsing Bash is Undecidable
2016-10-22 New Terminology: Static Parsing vs. Dynamic Parsing
2016-10-26 Grammar for Variable Substitutions
2016-10-28 The Five Meanings of #. And What Does ${####} Mean?
2016-10-29 Four Slashes and Three Meanings
2016-11-17 OSH Can Be Parsed With Two Tokens of Lookahead
2016-11-18 Problems With $((
2017-08-31 Problems With the test Builtin: What Does -a Mean?
2017-11-10 OSH 0.2 - Parsing One Million Lines of Shell
2017-11-28 Correction: How to Parse Here Documents
2017-12-15 The Oil Lexer: Introduction and Recap
2017-12-17 When Are Lexer Modes Useful?
2019-02-07 How to Parse Shell Like a Programming Language
2019-12-09 Oil 0.7.pre9 and a Fast Shell Parser
2020-01-16 Oil's Parser is 160x to 200x Faster Than It Was 2 Years Ago
2020-01-17 Oil Uses Its Parser For History And Completion
2020-01-18 Oil's Parser Doesn't Worry About Aliases and Prompts
2021-09-19 Oil Has Multi-line Commands and String Literals

#performance

2016-12-27 Bespoke Superoptimization
2016-12-30 Questions about Superoptimization
2019-12-09 Oil 0.7.pre9 and a Fast Shell Parser
2020-01-16 Oil's Parser is 160x to 200x Faster Than It Was 2 Years Ago
2020-07-21 Comments on Eggex and Regular Languages
2020-08-12 A Plan for Oil 0.8 and 0.9
2020-11-23 Fixes and Updates to Oil Benchmarks
2024-01-16 Oils 0.19.0 - Dicts, Procs, Funcs, and Places
2024-03-21 Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed
2024-06-19 Oils 0.22.0 - Docs, Pretty Printing, Nix, and Zsh
2024-09-13 A Retrospective on the Oils Project

#praise

2018-02-14 CommonMark is a Useful, High-Quality Project
2018-03-27 Addendum: Two Recurse Center Projects That Explain CPython
2018-11-15 Dev Log #7: Hollowing Out the Python Interpreter
2021-07-22 Classic Blog Posts by Joel Spolsky

#project-roadmap

2016-10-15 Blog Roadmap, and Project Roadmap
2016-10-23 Roadmap #2
2016-11-21 Roadmap #3: Two Top Priorities
2016-11-25 Roadmap #3 Continued
2017-02-27 Review of Roadmap #3
2017-03-01 Project Roadmap #4
2017-07-29 Review of Roadmap #4 (abridged)
2017-10-06 Roadmap #5: Why Oil, and Why OSH?
2018-01-15 Success with Aboriginal, Alpine, and Debian Linux
2018-08-15 Summer Vacation is Over!
2018-11-15 Dev Log #7: Hollowing Out the Python Interpreter
2020-08-12 A Plan for Oil 0.8 and 0.9
2020-08-17 Technical Issues And Risks
2023-03-25 Oils Roadmap: What We Can Use Help With

#project-updates

2016-10-10 What Oil Looks Like, and a Plan for This Blog
2016-10-11 Oil Can Parse Real Shell Programs
2016-10-14 Oil Now Parses My /etc/init.d Directory
2016-10-16 debootstrap Parsed
2016-10-24 Four More Projects Parsed
2016-11-09 Parsing 183,000 Lines of Git's Shell Source Code
2016-11-19 Oil is on Github
2016-11-29 Status Update: the Backbone of the Interpreter
2017-01-19 On the Wiki: Project Goals and Related Projects
2017-02-26 Status Update and Blog Backlog
2017-04-08 The Riskiest Part of the Project
2017-05-31 Post-Vacation Update and Build System Observations
2017-06-02 Project Metrics
2017-06-19 Working Toward an OSH Release
2017-07-02 OSH Runs Real Shell Programs
2017-07-28 The Long Slog Through the Shell (abridged)
2017-10-24 Status Update: Parser Correctness and Performance
2018-03-25 I'm Attending Recurse Center this Summer
2018-07-21 Summer Status Update
2018-08-15 Summer Vacation is Over!
2018-10-10 Running Bash Completion Scripts with OSH
2018-11-15 Dev Log #7: Hollowing Out the Python Interpreter
2018-12-05 Dev Log #8: Shell Protocol Designs
2018-12-16 Dev Log #9: Progress on Oil Subprojects
2019-02-05 Success With the Interactive Shell
2019-06-13 What's Happened Since February?
2019-12-09 Oil 0.7.pre9 and a Fast Shell Parser
2020-01-11 Making Plans for Oil in 2020
2020-02-20 February Recap / Brain Dump
2020-03-05 March Recap / Link Dump
2021-06-08 Recent Progress on the Oil Language
2021-12-07 Backlog: Rough Progress Assessments
2022-01-30 January Release Notes and Themes
2023-01-11 Pictures of a Working Garbage Collector
2023-03-16 Oil 0.14.2 - Interactive Shell, and Conceding to autoconf
2023-11-30 Winter Status Update
2024-09-09 What Oils Looks Like in 2024
2024-09-10 After 8 Years, Oils Is Still Small and Flexible
2024-09-13 A Retrospective on the Oils Project

#python

2017-04-08 The Riskiest Part of the Project
2017-04-09 An Unexpected Solution: Cobbling Together a Python Interpreter
2017-04-23 The OPy Front End is Working
2017-04-25 OVM will be a Slice of the CPython VM
2017-05-05 Rewriting Python's Build System From Scratch
2018-03-04 Building Oil with the OPy Bytecode Compiler
2018-03-27 Addendum: Two Recurse Center Projects That Explain CPython
2018-11-15 Dev Log #7: Hollowing Out the Python Interpreter
2019-06-17 Frequently Asked Questions (2019)
2020-01-22 Ambitions for a Unix Shell
2022-03-31 Oil Is Being Implemented "Middle Out"
2022-05-10 Brief Descriptions of a Python to C++ Translator
2022-05-29 A Garbage-Collected Heap in C++, Shaped Like Typed Python
2024-06-17 Comments on Scripting, CGI, and FastCGI

#r-language

2018-11-15 Dev Log #7: Hollowing Out the Python Interpreter
2018-11-30 What Is a Data Frame? (In Python, R, and SQL)

#real-problems

2019-02-18 OSH 0.6.pre15 Does Not Crave Chaos and Destruction
2019-08-16 Oil's Stricter Semantics Solve Real Problems
2020-02-20 February Recap / Brain Dump
2020-02-27 Oil Doesn't Confuse Flags and Files (Code and Data)
2020-10-22 Four Features That Justify a New Unix Shell
2021-04-09 Oil Doesn't Require Quoting Everywhere
2021-06-08 Recent Progress on the Oil Language
2021-09-19 Oil Has Multi-line Commands and String Literals
2022-05-05 Oil 0.10.0 - Can Unix Shell Error Handling Be Fixed Once and For All?
2023-05-13 Oils 0.15.0 - Big Contributions and More Concessions
2023-06-24 Oils 0.16.0 - Breaking Renames and YSH

#recurse-center

2018-03-25 I'm Attending Recurse Center this Summer
2018-03-27 Addendum: Two Recurse Center Projects That Explain CPython
2018-07-21 Summer Status Update
2018-07-22 Summer Blog Topics
2018-07-23 OSH 0.5 - A Release with Many Contributors
2018-08-15 Summer Vacation is Over!
2021-01-25 Shell Scripts, Audio, Images, and 3D Graphics

#sample-code

2016-10-20 Parsing Bash is Undecidable
2016-11-03 Pratt Parsing Without Prototypal Inheritance, Global Variables, Virtual Dispatch, or Java
2016-11-06 Thirteen Incorrect Ways and Two Awkward Ways to Use Arrays
2016-11-14 Example Code in Shell, Awk, and Make
2016-12-26 Four Functions and Enum Labelings
2017-01-13 Shell Has a Forth-like Quality
2017-01-15 Pipelines Support Vectorized, Point-Free, and Imperative Style
2017-01-31 Bernstein Chaining of ssh and su
2017-04-22 Code for the Shunting Yard Algorithm, and More
2017-08-12 Avoid Directly Manipulating File Descriptors in Shell
2017-09-19 How to Quickly and Correctly* Generate a Git Log in HTML
2017-09-29 Git Log in HTML: A Harder Problem and A Safe Solution
2018-11-30 What Is a Data Frame? (In Python, R, and SQL)
2019-12-22 Eggex Example: Recognizing Python Integer Literals
2020-07-21 Comments on Eggex and Regular Languages
2021-08-21 An Opinionated Guide to xargs

#security

2019-01-18 BayLISA Presentation Materials

#shell-runtime

2016-10-18 Shells Use Temp Files to Implement Here Documents
2017-02-26 Status Update and Blog Backlog
2017-07-02 OSH Runs Real Shell Programs
2017-07-28 The Long Slog Through the Shell (abridged)
2019-08-16 Oil's Stricter Semantics Solve Real Problems
2020-04-02 Three Comics For Understanding Unix Shell
2020-11-10 Changes to Shell Runtime Semantics
2021-11-20 Oil 0.9.4 - User Feedback
2022-01-30 January Release Notes and Themes
2024-03-21 Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed
2024-11-13 Oils 0.23.0 - Writing YSH Code, User Feedback, and Bug Bounty

#shell-style-guideline

2017-08-12 Avoid Directly Manipulating File Descriptors in Shell
2017-08-31 Problems With the test Builtin: What Does -a Mean?

#shell-the-bad-parts

2016-10-20 Parsing Bash is Undecidable
2016-10-28 The Five Meanings of #. And What Does ${####} Mean?
2016-10-29 Four Slashes and Three Meanings
2016-11-06 Thirteen Incorrect Ways and Two Awkward Ways to Use Arrays
2016-11-07 Contrived Example Found in the Wild
2016-11-18 Problems With $((
2017-08-12 Avoid Directly Manipulating File Descriptors in Shell
2017-08-31 Problems With the test Builtin: What Does -a Mean?
2018-08-19 Release of OSH 0.6.pre2
2018-10-10 Running Bash Completion Scripts with OSH
2018-12-16 Dev Log #9: Progress on Oil Subprojects
2020-02-27 Oil Doesn't Confuse Flags and Files (Code and Data)
2020-04-19 Oil 0.8.pre4 - The Biggest Shell Programs in the World
2021-12-01 Appendix: The Journey of Extended Globs

#shell-the-good-parts

2017-01-13 Shell Has a Forth-like Quality
2017-01-15 Pipelines Support Vectorized, Point-Free, and Imperative Style
2020-02-19 Four More Posts in "Shell: The Good Parts"
2020-03-25 Oil 0.8.pre3 - A Line Editor and a Continuous Build
2020-07-21 Comments on Eggex and Regular Languages
2021-01-24 Shell Scripts Are Executable Documentation
2021-01-25 Shell Scripts, Audio, Images, and 3D Graphics
2021-01-26 Unix Shell: Philosophy, Design, and FAQs
2021-07-08 Summer Blog Backlog: Understanding and Using Shell
2021-07-22 Classic Blog Posts by Joel Spolsky
2021-08-21 An Opinionated Guide to xargs
2021-12-07 Backlog: Rough Progress Assessments
2023-06-17 Narrow Waists Can Be Interior or Exterior: PyObject vs. Unix Files
2023-06-20 Oils Is Exterior-First (Code, Text, and Structured Data)

#software-architecture

2021-01-25 Shell Scripts, Audio, Images, and 3D Graphics
2021-01-26 Unix Shell: Philosophy, Design, and FAQs
2021-04-11 Comments About Build Systems and CI Services
2021-07-08 Summer Blog Backlog: Understanding and Using Shell
2021-07-09 Summer Blog Backlog: Distributed Systems
2021-07-19 Blog Review: Distributed Systems
2021-08-06 Unix Shell: History and Trivia
2021-12-31 Retrospective: Software Architecture
2022-02-26 The Internet Was Designed With a Narrow Waist
2022-03-12 A Sketch of the Biggest Idea in Software Architecture
2023-06-17 Narrow Waists Can Be Interior or Exterior: PyObject vs. Unix Files
2023-06-20 Oils Is Exterior-First (Code, Text, and Structured Data)

#soil

2022-07-28 Oil 0.11.0 - Big Features and Project Changes
2023-05-13 Oils 0.15.0 - Big Contributions and More Concessions
2023-06-11 Sketches of YSH Features
2024-01-16 Oils 0.19.0 - Dicts, Procs, Funcs, and Places
2024-02-21 Oils 0.20.0 - Eggex, JSON, and Android
2024-05-14 Notes for Houston Functional Programmers Talk

#string-hygiene

2021-08-21 An Opinionated Guide to xargs

#task-files

2020-02-19 Four More Posts in "Shell: The Good Parts"
2021-01-24 Shell Scripts Are Executable Documentation
2024-11-13 Oils 0.23.0 - Writing YSH Code, User Feedback, and Bug Bounty

#testing

2017-03-04 If you have Debian/Ubuntu, and Five Minutes
2017-03-23 Measuring Progress with Tests
2017-06-22 How I Use Tests
2017-06-24 How I Plan to Use Tests: Transforming OSH
2017-11-10 OSH 0.2 - Parsing One Million Lines of Shell

#toil

2020-03-25 Oil 0.8.pre3 - A Line Editor and a Continuous Build
2020-11-23 Fixes and Updates to Oil Benchmarks

#translated-post

2017-01-13 Shell Has a Forth-like Quality
2018-01-15 Success with Aboriginal, Alpine, and Debian Linux

#tweet

2018-04-26 oil-dev is moving to Zulip
2019-08-16 Oil's Stricter Semantics Solve Real Problems
2020-01-14 The Simplest Explanation of Oil
2021-07-08 Summer Blog Backlog: Understanding and Using Shell
2021-07-09 Summer Blog Backlog: Distributed Systems
2021-07-19 Blog Review: Distributed Systems

#type-checking

2016-11-30 A Problem with Type Checking
2016-12-05 Type Checking vs. Metaprogramming; ML vs. Lisp
2022-05-10 Brief Descriptions of a Python to C++ Translator

#unicode

2023-06-15 How to Create a UTF-16 Surrogate Pair by Hand, with Python

#unix-tools

2017-01-31 Bernstein Chaining of ssh and su
2017-09-29 Git Log in HTML: A Harder Problem and A Safe Solution

#usage-tips

2017-01-31 Bernstein Chaining of ssh and su
2017-09-19 How to Quickly and Correctly* Generate a Git Log in HTML
2017-09-29 Git Log in HTML: A Harder Problem and A Safe Solution
2017-10-25 Comments About Shell, Awk, and Make
2018-02-14 CommonMark is a Useful, High-Quality Project
2020-02-19 Four More Posts in "Shell: The Good Parts"
2021-01-24 Shell Scripts Are Executable Documentation
2021-04-10 find and test: How To Read And Write Them
2021-08-21 An Opinionated Guide to xargs

#utf8

2017-09-29 Git Log in HTML: A Harder Problem and A Safe Solution
2018-02-14 CommonMark is a Useful, High-Quality Project
2018-08-19 Release of OSH 0.6.pre2
2021-04-13 Release of Oil 0.8.9
2023-06-11 Sketches of YSH Features
2023-06-15 How to Create a UTF-16 Surrogate Pair by Hand, with Python
2023-06-20 Oils Is Exterior-First (Code, Text, and Structured Data)
2024-02-21 Oils 0.20.0 - Eggex, JSON, and Android

#why-a-new-shell

2017-01-19 On the Wiki: Project Goals and Related Projects
2017-10-06 Roadmap #5: Why Oil, and Why OSH?
2018-01-28 Why Create a New Unix Shell?
2018-07-22 Summer Blog Topics
2019-01-18 BayLISA Presentation Materials
2019-08-16 Oil's Stricter Semantics Solve Real Problems
2020-01-14 The Simplest Explanation of Oil
2020-01-22 Ambitions for a Unix Shell
2020-02-19 Four More Posts in "Shell: The Good Parts"
2020-10-22 Four Features That Justify a New Unix Shell
2021-01-27 Why Create a New Unix Shell? (2021)
2021-12-02 Backlog: Explaining the Oil Project

#ysh

2023-06-08 Reviewing YSH
2023-06-11 Sketches of YSH Features
2023-06-15 How to Create a UTF-16 Surrogate Pair by Hand, with Python
2023-06-20 Oils Is Exterior-First (Code, Text, and Structured Data)
2023-06-24 Oils 0.16.0 - Breaking Renames and YSH
2023-08-02 Oils 0.17.0 - YSH Is Becoming Real
2023-09-17 Oils 0.18.0 - Progress on All Fronts
2023-11-30 Winter Status Update
2023-12-21 Interactive Shell Screencasts
2024-02-21 Oils 0.20.0 - Eggex, JSON, and Android
2024-03-21 Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed
2024-06-19 Oils 0.22.0 - Docs, Pretty Printing, Nix, and Zsh
2024-09-09 What Oils Looks Like in 2024
2024-09-11 Garbage Collection Makes YSH Different
2024-09-13 A Retrospective on the Oils Project
2024-11-13 Oils 0.23.0 - Writing YSH Code, User Feedback, and Bug Bounty

#zephyr-asdl

2024-01-16 Oils 0.19.0 - Dicts, Procs, Funcs, and Places

#zulip-links

2019-08-16 Oil's Stricter Semantics Solve Real Problems
2019-08-22 Oil Language Design Notes #1
2019-10-04 You Can Now Try the Oil Language
2020-02-20 February Recap / Brain Dump
2020-03-05 March Recap / Link Dump
2020-11-10 Changes to Shell Runtime Semantics
2020-11-23 Fixes and Updates to Oil Benchmarks
2021-03-19 Release of Oil 0.8.8
2021-07-07 Release of Oil 0.8.12
2021-11-30 Winter Blog Backlog: Recent Progress
2021-12-20 Backlog: Language FAQs
2022-01-30 January Release Notes and Themes
2022-03-12 A Sketch of the Biggest Idea in Software Architecture
2022-03-31 Oil Is Being Implemented "Middle Out"
2022-05-29 A Garbage-Collected Heap in C++, Shaped Like Typed Python
2022-08-24 Oil 0.12.4 - User Feedback
2022-10-20 Oil 0.12.7 - Garbage Collector Problems
2023-01-11 Pictures of a Working Garbage Collector
2023-03-25 Oils Roadmap: What We Can Use Help With
2023-06-11 Sketches of YSH Features
2024-01-16 Oils 0.19.0 - Dicts, Procs, Funcs, and Places
2024-03-21 Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed
2024-06-19 Oils 0.22.0 - Docs, Pretty Printing, Nix, and Zsh
2024-11-13 Oils 0.23.0 - Writing YSH Code, User Feedback, and Bug Bounty

Back to the blog index.