| CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx/1.24.0 (Ubuntu)
Date: Wed, 31 Dec 2025 07:41:52 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
location: https://factorcode.org/slava/
HTTP/1.1 200 Document follows
Server: nginx/1.24.0 (Ubuntu)
Date: Wed, 31 Dec 2025 07:41:52 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
last-modified: Sun, 9 Nov 2025 19:23:09 GMT
Content-Encoding: gzip
Slava Pestov's home page

This page is best viewed with Netscape Navigator and a dialup modem.

Slava Pestov's corner of the web
Hi there! I live in the Hudson Valley of New York with my family, surrounded by various animals.Contact details:
- E-mail: sviatoslav.pestov@gmail.com
- Mastodon: @slava@mathstodon.xyz
- GitHub: github.com/slavapestov
Fun
Finitely-presented monoids that do not admit finite complete presentations:- ⟨a, b | aaa=a, abba=bb⟩ — an example with length 10.
- ⟨a, b | aba=aa, baa=aab⟩ — my original example with length 11.
- ⟨a, b | bab=aaa, bbb=bb⟩ — explore the equivalence class of aaaaaaaa.
- The monoid zoo — a random tour of two-generated one-relation monoids of length 10.
Work
Apple (2015–)
I'm currently on the Swift language team at Apple.The Swift generics implementation is one of my focus areas. I am slowly documenting it:
- Compiling Swift Generics (2022, ongoing)
- Library evolution in Swift (2020)
- Implementing Swift generics (2017)
- What's new in Swift 4.2 (WWDC 2018)
- Design protocol interfaces in Swift (WWDC 2022)
- Protocols and associated types in Swift (2023, slides only)
- SE-0193: Cross-module inlining and specialization (2017)
- SE-0346: Lightweight same-type requirements for primary associated types (2022)
- SE-0393: Value and type parameter packs (2023)
- SE-0398: Allow generic types to abstract over packs (2023)
- SE-0427: Noncopyable generics (2024)
Google (2010–2014)
I played a key role in the development of firmware and Linux device drivers for a new data center storage device.Factor (2003–2010)
I led the development of the Factor programming language.Factor is a dynamically-typed programming language with a stack-based syntax and a heavy emphasis on interactive development, reflection, and simplicity. The implementation includes an optimizing compiler, cross-platform GUI toolkit, and web framework.
A conference paper:
A talk:
jEdit (1998–2003)
I also wrote jEdit, a popular programmer's text editor.jEdit has a plugin system, built on top of the dynamic features of the Java virtual machine. A tool within the editor can download and install plugins from a central registry. This was an early form of the "package manager" found in many popular text editors and languages today.
This page is best viewed with Netscape Navigator and a dialup modem.