RSS.Social

baby steps

follow: @[email protected]

Posts

Rust, Python, and TypeScript: the new trifecta

You won't believe what this AI said after deleting a database (but you might relate)

Using Rust to build Aurora DSQL

Rust turns 10

Dyn you have idea for `dyn`?

Dyn async traits, part 10: Box box box

Rust in 2025: Language interop and the extensible compiler

Rust in 2025: Targeting foundational software

View types redux and abstract fields

Rust 2024 Is Coming

How I learned to stop worrying and love the LLM

Preview crates

MinPin: yet another pin proposal

The `Overwrite` trait and `Pin`

Making overwrite opt-in #crazyideas

More thoughts on claiming

Claiming, auto and otherwise

The borrow checker within

Unwind considered harmful?

Sized, DynSized, and Unsized

Ownership in Rust

Borrow checking without lifetimes

What I'd like to see for Async Rust in 2024 🎄

Being Rusty: Discovering Rust's design axioms

Project Goals

Idea: "Using Rust", a living document

Eurorust reflections

Easing tradeoffs with profiles

Polonius revisited, part 2

Empathy in open source: be gentle with each other

Polonius revisited, part 1

New Layout, and now using Hugo!

Stability without stressing the !@#! out

Higher-ranked projections (send bound problem, part 4)

Giving, lending, and async closures

Fix my blog, please

Thoughts on async closures

Must move types

Temporary lifetimes

To async trait or just to trait

Trait transformers (send bounds, part 3)

Return type notation (send bounds, part 2)

Async trait send bounds, part 1: intro

Rust in 2023: Growing up

Rust 2024...the year of everywhere?

Dyn async traits, part 9: call-site selection

What I meant by the "soul of Rust"

Dyn async traits, part 8: the soul of Rust

Come contribute to Salsa 2022!

Many modes: a GATs pattern

What it feels like when Rust saves your bacon

Async cancellation: a case study of pub-sub in mini-redis

Coherence and crate-level where-clauses

Implied bounds and perfect derive

dyn*: can we make dyn sized?

Dare to ask for more #rust2024

Panics vs cancellation, part 1

Dyn async traits, part 7: a design emerges?

Rustc Reading Club, Take 2

CTCFT 2021-11-22 Agenda

View types for Rust

Rustc Reading Club

Dyn async traits, part 6

Dyn async traits, part 5

CTCFT 2021-10-18 Agenda

Dyn async traits, part 4

Dyn async traits, part 3

Dyn async traits, part 2

Dyn async traits, part 1

Rustacean Principles, continued

CTCFT 2021-09-20 Agenda

Rustacean Principles

Next CTCFT Meeting: 2021-09-20

CTCFT 2021-07-19 Agenda

CTCFT Social Hour

CTCFT 2021-06-21 Agenda

Edition: the song

CTCFTFTW

[AiC] Vision Docs!

Async Vision Doc Writing Sessions VII

Async Vision Doc Writing Sessions VI

Async Vision Doc Writing Sessions V

Async Vision Doc Writing Sessions IV

My "shiny future"

Async Vision Doc Writing Sessions III

Async Vision Doc Writing Sessions II

Async Vision Doc Writing Sessions

The more things change...

Looking back on 2020

Rotating the compiler team leads

Async Interview #8: Stjepan Glavina

Async interviews: my take thus far

Library-ification and analyzing Rust

Async Interview #7: Withoutboats

Async Interview #6: Eliza Weisman

Async Interview #5: Steven Fackler

Async Interview #4: Florian Gilcher

Towards a Rust foundation

Async Interview #3: Carl Lerche

Async Interview #2: cramertj, part 3

Async Interview #2: cramertj, part 2

Async Interview #2: cramertj

AiC: Improving the pre-RFC process

Rust 2020

Async Interview #1: Alex and Nick talk about async I/O and WebAssembly

Announcing the Async Interviews

why async fn in traits are hard

AiC: Shepherds 3.0

AiC: Unbounded queues and lang design

Async-await status report #2

AiC: Language-design team meta working group

AiC: Collaborative summary documents

AiC: Adventures in consensus

More than coders

Async-await status report

Rust lang team working groups

Salsa: Incremental recompilation

Polonius and the case of the hereditary harrop predicate

Polonius and region errors

Rust in 2019: Focus on sustainability

After NLL: Moving from borrowed data and the sentinel pattern

Splash 2018 Mid-Week Report

After NLL: Interprocedural conflicts

MIR-based borrowck is almost here

October Office Hour Slots

Office Hours #1: Cyclic services

Office Hours #0: Debugging with GDB

Rust office hours

Rust pattern: Iterating an over a Rc<Vec<T>>

Never patterns, exhaustive matching, and uninhabited types (oh my!)

Proposal for a staged RFC process

MIR-based borrow check (NLL) status update

An alias-based formulation of the borrow checker

Rust pattern: Precise closure capture clauses

Rust pattern: Rooting an Rc handle

Maximally minimal specialization: always applicable impls

In Rust, ordinary vectors are values

An on-demand SLG solver for chalk

#Rust2018

Lessons from the impl period

Chalk meets SLG

Cyclic queries in chalk

Non-lexical lifetimes: draft RFC and prototype available

Query structure in chalk

gnome-class: Integrating Rust and the GNOME object system

Unification in Chalk, part 2

Rayon 0.7 released

Unification in Chalk, part 1

The Lane Table algorithm

Nested method calls via two-phase borrowing

Non-lexical lifetimes using liveness and location

Project idea: datalog output from rustc

Compiler design sprint summary

Unsafe code and shared references

Lowering Rust traits to logic

Assigning blame to unsafe code

Parallel iterators, part 3: Consumers

Associated type constructors, part 4: Unifying ATC and HKT

Associated type constructors, part 3: What higher-kinded types might look like

Associated type constructors, part 2: family traits

Associated type constructors, part 1: basic concepts and introduction

Switching to Jekyll

Supporting blanket impls in specialization

Observational equivalence and unsafe code

Announcing intorust.com

Distinguishing reuse from override

Intersection Impls

Thoughts on trusting types and unsafe code

'Tootsie Pop' Followup

The 'Tootsie Pop' model for unsafe code

Unsafe abstractions

Non-lexical lifetimes: adding the outlives relation

Non-lexical lifetimes based on liveness

Non-lexical lifetimes: introduction

Nice errors in LALRPOP

Parallel Iterators Part 2: Producers

Parallel Iterators Part 1: Foundations

Rayon: data parallelism in Rust

Virtual Structs Part 4: Extended Enums And Thin Traits

LALRPOP

Virtual Structs Part 3: Bringing Enums and Structs Together

Virtual Structs Part 2: Classes strike back

Virtual Structs Part 1: Where Rust's enum shines

A few more remarks on reference-counting and leaks

On reference-counting and leaks

Modeling graphs in Rust using vector indices

Little Orphan Impls

Purging proc

Allocators in Rust

Multi- and conditional dispatch in traits

Attribute and macro syntax

An experimental new type inference scheme for Rust

Implied bounds

Follow up to Focusing on Ownership

Focusing on ownership

Parallel pipelines for JS

Typed Objects Status Report

Value types in JavaScript

Rust RFC: Opt-in builtin traits

Rust RFC: Stronger guarantees for mutable borrows

Closures and the borrow checker

Rvalue lifetimes in Rust

DST, Take 5

Structural arrays in Typed Objects

Thoughts on DST, Part 4

Thoughts on DST, Part 2

Thoughts on DST, Part 3

Thoughts on DST, Part 1

Optimizing SIMD, part 2

Optimizing SIMD

Parameter coercion in Rust

Treating vectors like any other container

Intermingled parameter lists, take 2

Optimizing complex typed object assignments

Intermingled parameter lists

PJS Roadmap

Iterators yielding mutable references

Iterators yielding mutable references, take 2

Single inheritance

Typed object handles

Fn types in Rust, take 3

Type specifications in Parallel JS

Integrating binary data and type inference in SpiderMonkey

Rust presentation at Northeastern

Data Parallelism in Rust

On the connection between memory management and data-race freedom

Reducing DST Annotation

More on fns

Removing procs

Integrating binary data and PJs

Procedures, continued

Mutable fn alternatives

Recurring closures and dynamically sized types

Dynamically sized types, revisited

Parallelizable JavaScript Subset

The Case of the Recurring Closure

A tour of the Parallel JS implementation (Part 2)

Nested lifetimes

Associated items continued

Associated items

Guaranteeing parallel execution

A tour of the Parallel JS implementation (Part 1)

Parallel JS lands

Splitting the PJs API

Interfacing with C functions in Rust

Destructors and finalizers in Rust

Revised for loop protocol

Lifetime notation redux

The case FOR deterministic results

Deterministic or not?

Lifetime notation

Improving our parallel intrinsic

Self-hosted Parallel JS

Imagine never hearing the phrase 'aliasable, mutable' again

Purity in Parallel JavaScript

Restrict pointers

Function and object types

Extending the definition of purity in Rust

Rivertrail

Termination of trait matching

A postscript on traits and impls

Refining traits and impls

Moves based on type

Type system for borrowing permissions

Rvalue lifetimes

Datasort refinements

Type inference in Spidermonkey

Generalizing inherited mutability

Yet another tutorial on borrowed pointers

About that 'tutorial'...

Borrowed pointer tutorial

Concurrent maps

Fn types

Borrowed Pointer Tutorial

HotPar

Unifying patterns in alts and lets

Mutability

Mutability idea retracted

Simple effect system

Moving mutability into the type

Vectors, slices, and functions, oh my!

Iface types

Fn types

Borrowing errors

Borrowing

In favor of types of unknown size

Permission regions for race-free parallelism

References

On types and type schemes

Vectors, strings, and slices

Syntax matters...?

DOA: Don't overabstract

Declared vs duckish typing

Rust's object system

For loops

Avoiding region explosion in Rust

Servo design

Progress on inlining

Serialization without type information via impls

Regions tradeoffs

Versioning considered OK

CCI and versioning

Returning refs

Regions-lite...ish

Using futures in the task API

Task API

Auto-serialization in Rust

Breaking out is hard to do

Cross-crate inlining

Update

Proposed JS parallelism vs actors

Parallel Javascript

Block sugar in expressions

Composing blocks

Tone and criticism

Dynamic race detection

Implementing unique closures

Const vs Mutable

Partially ordered unique closures

Challengines implementing unique closures

Pure blocks

Sendable functions

Why not modes?

Rust usability problems

Coroutines for Rust

Statement-level parallelism

Rust without implicit copies

Why case classes are better than variant types