Oils Blog 2016-2024
- Posts
- 227 from 10 Oct 2016 to 4 Jan 2025
- Posting
- now and then
- Kind
- project news
2025 1
2024 13
- Oils Will Move to the oils.pub Domain
- Why Should a Unix Shell Have Objects?
- Oils 0.23.0 - Writing YSH Code, User Feedback, and Bug Bounty
- A Retrospective on the Oils Project
- Garbage Collection Makes YSH Different
- After 8 Years, Oils Is Still Small and Flexible
- What Oils Looks Like in 2024
- Oils 0.22.0 - Docs, Pretty Printing, Nix, and Zsh
- Comments on Scripting, CGI, and FastCGI
- Notes for Houston Functional Programmers Talk
- Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed
- Oils 0.20.0 - Eggex, JSON, and Android
- Oils 0.19.0 - Dicts, Procs, Funcs, and Places
2023 16
- Interactive Shell Screencasts
- Winter Status Update
- Oils 0.18.0 - Progress on All Fronts
- Oils 0.17.0 - YSH Is Becoming Real
- Oils 0.16.0 - Breaking Renames and YSH
- Oils Is Exterior-First (Code, Text, and Structured Data)
- Narrow Waists Can Be Interior or Exterior: PyObject vs. Unix Files
- How to Create a UTF-16 Surrogate Pair by Hand, with Python
- Sketches of YSH Features
- Reviewing YSH
- Oils 0.15.0 - Big Contributions and More Concessions
- Reasons for the Big Renaming to Oils, OSH, and YSH
- Oils 2023 FAQ
- Oils Roadmap: What We Can Use Help With
- Oil 0.14.2 - Interactive Shell, and Conceding to autoconf
- Pictures of a Working Garbage Collector
2022 10
- Oil 0.12.7 - Garbage Collector Problems
- Oil 0.12.4 - User Feedback
- Oil 0.11.0 - Big Features and Project Changes
- A Garbage-Collected Heap in C++, Shaped Like Typed Python
- Brief Descriptions of a Python to C++ Translator
- Oil 0.10.0 - Can Unix Shell Error Handling Be Fixed Once and For All?
- Oil Is Being Implemented "Middle Out"
- A Sketch of the Biggest Idea in Software Architecture
- The Internet Was Designed With a Narrow Waist
- January Release Notes and Themes
2021 29
- Retrospective: Software Architecture
- Backlog: Language FAQs
- Backlog: Rough Progress Assessments
- Backlog: Explaining the Oil Project
- Appendix: The Journey of Extended Globs
- Winter Blog Backlog: Recent Progress
- Oil 0.9.4 - User Feedback
- Oil Has Multi-line Commands and String Literals
- An Opinionated Guide to xargs
- Unix Shell: History and Trivia
- Classic Blog Posts by Joel Spolsky
- Blog Review: Distributed Systems
- Summer Blog Backlog: Distributed Systems
- Summer Blog Backlog: Understanding and Using Shell
- Release of Oil 0.8.12
- Recent Progress on the Oil Language
- Notes on the HotOS Unix Shell Panel
- Release of Oil 0.8.9
- Comments About Build Systems and CI Services
- find and test: How To Read And Write Them
- Oil Doesn't Require Quoting Everywhere
- Release of Oil 0.8.8
- Updates to the Oil FAQ
- Why Create a New Unix Shell?
- Unix Shell: Philosophy, Design, and FAQs
- Shell Scripts, Audio, Images, and 3D Graphics
- Shell Scripts Are Executable Documentation
- Comments About Parsing: Theory vs. Practice
- Blog Roadmap for January 2021
2020 30
- Three Great Videos About Regex Derivatives
- Fixes and Updates to Oil Benchmarks
- Changes to Shell Runtime Semantics
- Proposed Changes to Oil's Syntax
- More Changes to Oil's Syntax
- Metrics for Oil 0.8.4
- Big Changes to the Oil Language
- Four Features That Justify a New Unix Shell
- Technical Issues And Risks
- A Plan for Oil 0.8 and 0.9
- Regular Languages, Part 2: Ideas and Questions
- Comments on Eggex and Regular Languages
- Summer 2020 Blog Roadmap
- Oil 0.8.pre6 - Pure Bash and C++
- Oil 0.8.pre5 - Progress in C++
- Oil 0.8.pre4 - The Biggest Shell Programs in the World
- Three Comics For Understanding Unix Shell
- Oil 0.8.pre3 - A Line Editor and a Continuous Build
- Metrics for Oil 0.8.pre2
- March Recap / Link Dump
- Oil Doesn't Confuse Flags and Files (Code and Data)
- February Recap / Brain Dump
- Four More Posts in "Shell: The Good Parts"
- Ambitions for a Unix Shell
- Oil's Parser Doesn't Worry About Aliases and Prompts
- Oil Uses Its Parser For History And Completion
- Oil's Parser is 160x to 200x Faster Than It Was 2 Years Ago
- The Simplest Explanation of Oil
- Blog Roadmap for January 2020
- Making Plans for Oil in 2020
2019 13
- Eggex Example: Recognizing Python Integer Literals
- Oil 0.7.pre9 and a Fast Shell Parser
- You Can Now Try the Oil Language
- Oil Language Design Notes #1
- Oil's Stricter Semantics Solve Real Problems
- Release of OSH 0.7.pre1
- Frequently Asked Questions (2019)
- What's Happened Since February?
- OSH 0.6.pre15 Does Not Crave Chaos and Destruction
- How to Parse Shell Like a Programming Language
- Success With the Interactive Shell
- BayLISA Presentation Materials
- I'm Speaking About the Oil Shell this Thursday in San Jose, California
2018 21
- Dev Log #9: Progress on Oil Subprojects
- Dev Log #8: Shell Protocol Designs
- What Is a Data Frame? (In Python, R, and SQL)
- Dev Log #7: Hollowing Out the Python Interpreter
- Release of OSH 0.6.pre5
- Running Bash Completion Scripts with OSH
- Release of OSH 0.6.pre2
- Summer Vacation is Over!
- OSH 0.5 - A Release with Many Contributors
- Summer Blog Topics
- Summer Status Update
- Release of OSH 0.5.alpha3
- oil-dev is moving to Zulip
- Addendum: Two Recurse Center Projects That Explain CPython
- I'm Attending Recurse Center this Summer
- Building Oil with the OPy Bytecode Compiler
- CommonMark is a Useful, High-Quality Project
- OSH 0.4 - A Shell Language That's Nearly Feature Complete
- Popular Posts With Many Comments
- Why Create a New Unix Shell?
- Success with Aboriginal, Alpine, and Debian Linux
2017 52
- OSH 0.3 - Optimization, Benchmarks, and Bug Fixes
- When Are Lexer Modes Useful?
- The Oil Lexer: Introduction and Recap
- Blog Retrospective #3
- Correction: How to Parse Here Documents
- OSH 0.2 - Parsing One Million Lines of Shell
- Comments About Shell, Awk, and Make
- Status Update: Parser Correctness and Performance
- Roadmap #5: Why Oil, and Why OSH?
- Git Log in HTML: A Harder Problem and A Safe Solution
- How to Quickly and Correctly* Generate a Git Log in HTML
- Please Try the OSH 0.1 Release
- Problems With the test Builtin: What Does -a Mean?
- Avoid Directly Manipulating File Descriptors in Shell
- Post-Release Blog Topics
- Review of Roadmap #4 (abridged)
- The Long Slog Through the Shell (abridged)
- Please Try the First OSH Release
- OSH Runs Real Shell Programs
- How I Plan to Use Tests: Transforming OSH
- How I Use Tests
- Working Toward an OSH Release
- Project Metrics
- Post-Vacation Update and Build System Observations
- Rewriting Python's Build System From Scratch
- OVM will be a Slice of the CPython VM
- The OPy Front End is Working
- Code for the Shunting Yard Algorithm, and More
- Blog Retrospective #2
- Switching to "Twitter Mode"
- An Unexpected Solution: Cobbling Together a Python Interpreter
- The Riskiest Part of the Project
- Pratt Parsing Index and Updates
- Precedence Climbing is Widely Used
- Measuring Progress with Tests
- Oil-dev is Alive!
- If you have Debian/Ubuntu, and Five Minutes
- Project Roadmap #4
- Review of Roadmap #3
- Status Update and Blog Backlog
- From AST to Lossless Syntax Tree
- Translating Shell to Oil, Part Two
- Translating Shell to Oil
- Bernstein Chaining of ssh and su
- The Thinner Waist of the Interpreter
- Pretty Printing ASTs with ASDL, and Metaprogramming
- On the Wiki: Project Goals and Related Projects
- Pipelines Support Vectorized, Point-Free, and Imperative Style
- Shell Has a Forth-like Quality
- What is oheap?
- ASDL Implementation and Use Cases
- Success with ASDL
2016 42
- Questions about Superoptimization
- Using Reddit for Blog Comments
- Bespoke Superoptimization
- Four Functions and Enum Labelings
- A Math Problem: Function-Directed Enum Labeling
- Analogies for ASDL
- What is Zephyr ASDL?
- Type Checking vs. Metaprogramming; ML vs. Lisp
- A Problem with Type Checking
- Status Update: the Backbone of the Interpreter
- Roadmap #3 Continued
- Roadmap #3: Two Top Priorities
- Blog Retrospective #1
- Oil is on Github
- Problems With $((
- OSH Can Be Parsed With Two Tokens of Lookahead
- Example Code in Shell, Awk, and Make
- Shell, Awk, and Make Should Be Combined
- Parsing 183,000 Lines of Git's Shell Source Code
- Contrived Example Found in the Wild
- Thirteen Incorrect Ways and Two Awkward Ways to Use Arrays
- Pratt Parsers Can Be Statically Typed
- Pratt Parsing Without Prototypal Inheritance, Global Variables, Virtual Dispatch, or Java
- Review of Pratt/TDOP Parsing Tutorials
- Pratt Parsing and Precedence Climbing Are the Same Algorithm
- Four Slashes and Three Meanings
- The Five Meanings of #. And What Does ${####} Mean?
- Grammar for Variable Substitutions
- Four More Projects Parsed
- Roadmap #2
- New Terminology: Static Parsing vs. Dynamic Parsing
- Parsing Bash is Undecidable
- How OSH Uses Lexer Modes
- Shells Use Temp Files to Implement Here Documents
- How to Parse Here Documents
- debootstrap Parsed
- Blog Roadmap, and Project Roadmap
- Oil Now Parses My /etc/init.d Directory
- OSH Parses Shell Scripts Up Front in a Single Pass. Other Shells Don't.
- [ Is a Builtin, But [[ Is Part of the Language
- Oil Can Parse Real Shell Programs
- What Oil Looks Like, and a Plan for This Blog