---
title: "Ruff v0.0.281"
url: https://daily.dev/posts/ruff-v0-0-281-tffkpqw0y
source_url: https://astral.sh/blog/ruff-v0.0.281
type: article
source: "Astral"
published: 2026-03-31T12:27:09.776Z
updated: 2026-03-31T12:32:07.783Z
tags: ["python", "rust"]
reading_time: 7
upvotes: 1
comments: 0
language: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Ruff v0.0.281

**[Astral](https://daily.dev/sources/astral-sh)** · 7 min read · 1 upvotes · 0 comments

## Summary

Ruff v0.0.281 ships with a 2-3x faster lexer achieved through cache-friendly data structures, fewer allocations, and ASCII optimizations. The release adds eight new lint rules: four for type stubs (unused private TypeVar, Protocol, TypeAlias, TypedDict), one for unsupported method calls on __all__, self-assigning variable detection, unsafe subprocess.Popen preexec_fn usage, and pathlib-based replacements for os.sep.split and glob. End-of-line file-level noqa suppression comments are now warned about and ignored.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://astral.sh/blog/ruff-v0.0.281>

---

Tags: [#python](https://daily.dev/tags/python), [#rust](https://daily.dev/tags/rust)

[View this post on daily.dev](https://daily.dev/posts/ruff-v0-0-281-tffkpqw0y)
