Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Profile Poetry identification and avoid whole-inventory cloning with an alias index

Aberta
#537 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
5/5
Tempo estimado
Mais de uma semana
Facilidade para iniciantes
35/100
Tipo de issue
Refatoração
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
rust
Domínio
performance

Direção de pesquisa

Start with crates/pet-poetry/src/lib.rs at find_with_cache and try_from, then use the scale fixtures from #533 and ownership guidance from #536. Measure identification, allocation, operation counts, and timings across representative inventory sizes before choosing whether indexing is justified. Done means evidence-backed behavior tests preserve alias, symlink, workspace, refresh, and invalidation semantics, or document a measured deferral.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

enhancement

Tracking plan: #528
Priority: P3, measurement-gated optimization. Evidence: cloning/linear scan confirmed; end-user latency impact not yet profiled.

Problem

Poetry's cached discovery lookup clones the complete LocatorResult, including all environments, and try_from then scans that result and its symlinks for each candidate. At larger inventories this can produce repeated whole-inventory allocation and candidate-by-environment work. Cold concurrent callers can also repeat cache population work.

Sources: find_with_cache, try_from.

Scope

First measure identification and allocation/operation counts over representative Poetry inventory sizes using deterministic fixtures. If material, share immutable discovery results and index executables/aliases for direct lookup. Reuse existing per-key single-flight machinery where appropriate instead of adding another cache framework.

Preserve Poetry-versus-generic-venv precedence, prefix/project/manager fidelity, platform path semantics, and the full/workspace/kind-filtered refresh-state merge contract. Do not introduce broad cross-refresh cache persistence without an invalidation design.

Acceptance criteria

  • The issue records before/after operation or allocation counts and timings across multiple inventory sizes; any optimization claim is tied to evidence.
  • If indexing is justified, repeated identification no longer clones/scans the entire inventory for each candidate.
  • Alias/case/symlink identity, workspace association, manager details, refresh merging, and configuration invalidation have behavior tests.
  • Concurrent cache misses avoid unnecessary duplicate work without deadlocking or permanently caching failures.
  • Small-inventory latency and memory do not materially regress under #531/#533.
  • If the measured benefit is negligible, close with measurements and a documented deferral instead of landing complexity solely to remove clones.

Dependencies

Depends on #533 for scale fixtures and #536 for stable cache/snapshot ownership. This is deliberately after the reproduced process/transport failures; do not treat it as the first performance fix.

Linguagem predominante
Rust
Estrelas
207
Forks
45
Merge médio
3d 6h
PRs com merge (30d)
12

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de microsoft/python-environment-tools

Todas as issues de microsoft/python-environment-tools

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.