microsoft / microsoft/TypeScript

Better ownership lint to eliminate ownership chaos for generated code

Abierto
#63,540 6 comentarios 2 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Needs Proposal Suggestion
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

🔍 Search Terms
  • proposal-explicit-resource-management
  • ownership
  • lifetime
✅ Viability Checklist
⭐ Suggestion

Better ownership lint to kill ownership chaos.

Maybe rust lifetime?

📃 Motivating Example

See

https://github.com/denoland/deno/issues/34953

Typescript should lint below code will crash due to ownership

Deno.serve({}, async (_req) => {
  using file = await Deno.open(new URL(import.meta.url).pathname);
  return new Response(file.readable);
});

https://github.com/denoland/deno/issues/34953#issuecomment-4636526241

Some think

file.readable carries ownership of the file

https://github.com/denoland/deno/issues/34953#issuecomment-4636588109

Some think file.readable does not carries ownership of the file

> file.readable[Symbol.dispose]
undefined
💻 Use Cases
  1. What do you want to use this for?

Better ownership type

  1. What shortcomings exist with current approaches?

TBD

  1. What workarounds are you using in the meantime?

No way.

related

https://github.com/denoland/deno/issues/34931

Simple code leads to server crash due to ownership

Genered by AI.

Simplified for reproduce.

Deno.serve({}, async (_req) => {
  using file = await Deno.open(new URL(import.meta.url).pathname);
  return new Response(file.readable);
});

https://github.com/denoland/deno/issues/34953

How to easy stream file within deno server?


https://github.com/tc39/proposal-explicit-resource-management/issues/274

How does proposal-explicit-resource-management suggest how to easy extend stream file lifetime within server?


https://github.com/microsoft/TypeScript/issues/63540

Better ownership lint to kill ownership chaos

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con los ejemplos de ownership de este issue y compara los issues de Deno enlazados con el issue 274 de TC39 proposal-explicit-resource-management. La solicitud no identifica archivos TypeScript, tests ni una lint rule concreta, y sus secciones sobre deficiencias y workaround siguen TBD. Una propuesta completa tendría que definir el modelo de ownership, los diagnósticos y el comportamiento esperado antes de que pueda comenzar la implementación.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
javascript, typescript
Área
compilers
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Tranquilo
Claridad
Necesita aclaración
Aptitud para principiantes
18/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.