abs-tudelft / abs-tudelft/tydi

Add concrete type definitions

Ouverte
#51 0 commentaires 0 réactions 1 personne assignée Assignée à @mbrobbel Voir sur GitHub
enhancement
Langage dominant
Rust
Étoiles
15
Forks
5
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Currently, Streamlet Definition Files support only the declaration of multiple streamlets as such:

```tydi
Streamlet foo (
x : in Stream>,
y : out Stream>
)

Streamlet bar ...
```

In the internals of the generator tooling, one file is parsed to one library, containing the declared streamlets.

It would be nice to be able to define types, and use them across multiple libraries that reside in a single project.
Since the files do not only contain streamlet declarations, it would be nice to rename the files to .tydi file, and then be able to type something like the following.

For example, in some file: `mills.tydi`

```tydi
type Wheat = Stream>;
type Flour = Stream>;

Streamlet windmill (
wheat : in Wheat,
flour : out Flour
)
```

And another file: `bakery.tydi`

```tydi
use mills::Flour;

type Cookie = Stream>;

Streamlet bakery (
flour : in Flour,
cookie : out Cookie
)
```

This means the type of the interfaces `windmill.flour` and `bakery.flour` are equal (their in/out mode is not part of the type), and can be connected if their mode corresponds accordingly.

However `windmill.wheat` and `bakery.cookie` do not have the same types. In other words, the windmill outputs the exact same type of Flour that the bakery can use as input, but Wheat is not a Cookie.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

The issue describes adding type definitions and cross-file imports to the Tydi language. Start by examining the parser and generator tooling in the codebase, likely in src/parser.rs or similar, to understand how streamlet definitions are currently handled. Look for the library representation and how types are resolved. The change involves modifying the grammar, parsing logic, and type checking to support 'type' declarations and 'use' statements. Verify the changes by creating test .tydi files with type definitions and ensuring they can be connected correctly.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
rust
Domaine
compilers
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
40/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.