Alire 2022 Update
This is a modal window.
Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.
Formale Metadaten
Titel |
| |
Serientitel | ||
Anzahl der Teile | 287 | |
Autor | ||
Mitwirkende | ||
Lizenz | CC-Namensnennung 2.0 Belgien: Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen. | |
Identifikatoren | 10.5446/57019 (DOI) | |
Herausgeber | ||
Erscheinungsjahr | ||
Sprache |
Inhaltliche Metadaten
Fachgebiet | ||
Genre | ||
Abstract |
|
FOSDEM 2022174 / 287
2
4
6
8
12
17
21
23
31
35
37
41
44
45
46
47
50
62
65
66
67
68
71
73
81
84
85
86
90
92
94
100
102
105
111
114
115
116
117
118
121
122
124
127
131
133
135
137
139
140
141
142
145
149
150
156
164
165
167
169
170
171
172
174
176
178
180
183
184
189
190
192
194
198
205
206
207
208
210
218
220
224
225
229
230
232
235
236
238
239
240
242
243
244
245
246
249
250
253
260
262
264
267
273
274
277
282
283
287
00:00
QuellcodeSoftwareentwicklerProgrammierungPhysikalisches SystemStandardabweichungMereologieAutomatische IndexierungGruppenoperationDokumentenserverVersionsverwaltungWeb SiteNotepad-ComputerURLProgrammverifikationInformationClientProgrammbibliothekKonfiguration <Informatik>VerzeichnisdienstMailing-ListeStochastische AbhängigkeitWeg <Topologie>Schreib-Lese-KopfBitrateDemo <Programm>SoftwaretestStichprobeZeichenketteBoolesche AlgebraFehlermeldungGanze ZahlReelle ZahlVariableAbstraktionsebeneKonstanteMAPProjektive EbeneGeradeMultiplikationsoperatorVerzweigendes ProgrammGradientMathematikCodeOrtsoperatorGruppenoperationWeg <Topologie>ComputerspielRechter WinkelKategorie <Mathematik>Physikalisches SystemCASE <Informatik>Produkt <Mathematik>Mailing-ListeFormale SpracheSchreib-Lese-KopfCoxeter-GruppeVektorpotenzialQuellcodeTemplateMomentenproblemArithmetische FolgeDatensatzFramework <Informatik>Zusammenhängender GraphMAPSampler <Musikinstrument>Profil <Aerodynamik>ProgrammbibliothekClientRotationsflächeGamecontrollerSoftwaretestDatenstrukturBitrateSpeicherabzugDifferenteAbstimmung <Frequenz>Prozess <Informatik>Streaming <Kommunikationstechnik>MinimalgradVierzigAutomatische IndexierungVersionsverwaltungTorusDatenflussMultiplikationWasserdampftafelBewertungstheorieDivergente ReiheKonfiguration <Informatik>Dienst <Informatik>Klon <Mathematik>DateiformatWurzel <Mathematik>RPCZahlenbereichMereologieGraphWeb SiteNotepad-ComputerURLInformationLeistung <Physik>DokumentenserverProgrammierungENUMElektronische PublikationMetadatenSynchronisierungStandardabweichungRegulärer GraphTeilmengeSPARCPersönliche IdentifikationsnummerHilfesystemValiditätBitMatchingDatenverwaltungAuflösung <Mathematik>Suite <Programmpaket>ZeichenketteRechenschieberVariableKonfigurationsraumDefaultAbstraktionsebeneIntegralBoolesche AlgebraSpannweite <Stochastik>UmwandlungsenthalpieE-MailDeklarative ProgrammierspracheInstantiierungDiagrammXMLUMLComputeranimation
09:56
ZeichenketteBoolesche AlgebraFehlermeldungGanze ZahlReelle ZahlAbstraktionsebeneKonstanteMAPVariableLeistung <Physik>Übersetzer <Informatik>SkriptspracheGruppenoperationARM <Computerarchitektur>TemplateGraphGrundraumEingebettetes SystemZweiDifferenteBitrateAutomatische IndexierungVersionsverwaltungDefaultTopologieSoundverarbeitungTypentheorieEinfügungsdämpfungCoxeter-GruppeGradientQuaderGebäude <Mathematik>GruppenoperationHypermediaOnline-DienstMinimumVerschlingungDistributionenraumQuellcodeGewicht <Ausgleichsrechnung>Kette <Mathematik>GefrierenProjektive EbeneKonfigurationsraumVerzweigendes ProgrammIntegralKonfiguration <Informatik>BitArithmetische FolgeRechter WinkelPhysikalisches SystemCASE <Informatik>Bus <Informatik>FünfInstantiierungSoftwareentwicklerAbstandBildgebendes VerfahrenSchnittmengeCodeFamilie <Mathematik>SkriptspracheInternetworkingNabel <Mathematik>Grundsätze ordnungsmäßiger DatenverarbeitungE-MailGrundraumFehlertoleranzPunktPRINCE2ResultanteService providerPuffer <Netzplantechnik>Ganze ZahlFramework <Informatik>LoginBoolesche AlgebraProgrammierumgebungKartesische KoordinatenAliasingSpannweite <Stochastik>ZahlenbereichSampler <Musikinstrument>AggregatzustandMikrocontrollerProfil <Aerodynamik>Notepad-ComputerRückkopplungMailing-ListeGraphATMMereologieTemplateDemo <Programm>ValiditätLaufzeitfehlerVolumenvisualisierungCompilerWeb-ApplikationStandardabweichungAnalysisFehlermeldungGüte der AnpassungVariableComputeranimation
19:31
BildschirmmaskeVerschlingungProjektive EbeneDokumentenserverRückkopplungPunktWeb SiteSichtenkonzeptMultiplikationsoperatorComputeranimation
20:25
HypermediaStreaming <Kommunikationstechnik>ComputerspielTurm <Mathematik>Elektronische PublikationRepository <Informatik>MultiplikationComputeranimationBesprechung/Interview
21:12
DokumentenserverMathematikMultiplikationsoperatorRegulärer GraphVerzweigendes ProgrammRichtungMailing-ListeGruppenoperationBesprechung/Interview
21:56
EindringerkennungCASE <Informatik>Arithmetischer AusdruckBefehlsprozessorKonfigurationsraumArithmetisches MittelMultiplikationsoperatorElektronische PublikationMaßerweiterungKategorie <Mathematik>Figurierte ZahlSichtenkonzeptSchlussregelPunktBesprechung/Interview
23:00
KonfigurationsraumVariableArithmetischer AusdruckCASE <Informatik>RichtungPunktTreiber <Programm>ProgrammbibliothekSchlussregelBesprechung/Interview
23:33
PunktKonfigurationsraumProgrammbibliothekVariableProjektive EbeneEinsArithmetisches MittelTorusBitrateBesprechung/Interview
24:13
Hill-DifferentialgleichungMereologieVariableProgrammierumgebungProfil <Aerodynamik>Gebäude <Mathematik>Arithmetischer AusdruckDokumentenserverCASE <Informatik>Projektive EbeneElektronische PublikationBitTorusMenütechnikNP-hartes ProblemEntscheidungstheorieBesprechung/Interview
25:08
Übersetzer <Informatik>ComputerarchitekturHardwareCompilerMereologiePunktTermBitCASE <Informatik>InstantiierungBefehl <Informatik>BimodulBildschirmmaskeDemoszene <Programmierung>Offene MengePhysikalisches SystemBesprechung/Interview
26:24
CompilerNetzbetriebssystemGruppenoperationStrömungsrichtungElektronische PublikationPatch <Software>GraphfärbungBesprechung/Interview
27:00
Komplex <Algebra>Gebäude <Mathematik>MomentenproblemCompilerFokalpunktQuellcodeSampler <Musikinstrument>GruppenoperationGewicht <Ausgleichsrechnung>Prozess <Informatik>Exogene VariableBesprechung/Interview
27:43
GruppenoperationElektronische PublikationFitnessfunktionSystemaufrufCASE <Informatik>RechenwerkBitrateSpeicherabzugHyperbelverfahrenDatenparallelitätBesprechung/Interview
28:22
Workstation <Musikinstrument>ZweiWhiteboardUmsetzung <Informatik>RoboterBesprechung/Interview
28:57
Computeranimation
Transkript: Englisch(automatisch erzeugt)
00:08
Hello everyone, I'm Alejandro Mosteo and together with my project colleague Fabian Chateau We are going to bring you the latest news about the Alire project So for any newcomers here, what is Alire? Alire is a
00:26
package manager for the IDA language and also for the SPARC subset based on the packaging of sources and So as any other package manager built around a language community, it's an easy way to find dependencies, find libraries for reusing your own projects, but also
00:45
an easy way to share your own projects for the benefit of the community And since our last visit to Fosse them, there has been many developments. On the 14th of 2021 we had our first stable release
01:02
But also there has been many big features that we are going to discuss in this presentation that we hope we will make or will be already making your programming life easier so the publishing assistant is is the
01:21
tool within Alire that helps you with making your projects available for others and it relies on a standard workflow on GitHub in which you fork our official community index repository You add to it the
01:40
new manifests that describe your own projects and Finally, you submit a pull request that will be automatically checked by the GitHub actions, but also we pass a manual review in case there is something unusual about your project and This process that you can do entirely by hand, if you chose
02:04
is make a bit easier with the help of our publishing assistant, which will perform a series of validations and will generate the file that you have to submit So to see it in a bit more detail Here are the steps that the publishing assistant will perform
02:22
You launch it in the root of your project and it will first check that the changes are properly committed and in sync with the repository with your remote repository Then it will verify that you have the proper credentials and proper repositories in your account
02:41
at GitHub Then it will perform a check on the files that you intend to submit so it will retrieve their remote sources Optionally, it will build their release to verify that it can be built, of course And finally we present all the information, all the metadata for you to review
03:01
Assuming you accept this information, the last step of the publishing assistant is to generate the file that has to go into the pull request and also it offers a link, which is a standard feature of GitHub where if you upload the file there you will automatically create the pull request
03:22
otherwise, you can simply place the manifest in your local clone of your fork of the index and just proceed with a regular pull request to any project in GitHub There are a number of advanced adoptions in case you are not following the
03:46
simplest Git workflow. For example, you might prefer to submit tar files and in this case a liar will create the tar file for you from the sources, be it a regular repository or a
04:02
regular folder You can also pass a manifest template in a non-standard location for people that are maintaining repositories that are not actually a liar project And finally you can check which are the trusted sites where you can host your Git repository for the sources because
04:26
tar files can be hosted anywhere and a liar will not complain But as an extra precaution for Git repositories we have a list of trusted sites with the usual aspects like GitHub, SourceForge, GitLab and so on
04:41
Another part of a liar that has seen big improvements is the pinning system So what are pins? Pins is the the way that a liar offers you so you can use code that is not in an liar index, so work in progress or
05:00
unofficial versions and things like that. For example, you are developing two or three projects in tandem that they are changing frequently and together so you don't want to submit stable versions And there are several ways you can use this kind of projects. A liar offers
05:22
five kinds of pins that you are seeing here. The first one is a bit special in that it's simply a version of a write so You don't want to edit the standard dependency, but you for some reason want to use a particular version You can specify it like that Then you can use a local folder which
05:43
simply you specify the path to this folder and this folder will provide the dependency And then finally we have the remote variants in which you can specify simply a Git repository and in this case the main track
06:01
sorry, the main branch will be used and it will be updated when you perform an a liar update Otherwise you can specify a particular branch and this is the branch that will be tracked and the latest code will be fetched from it when you do an update and
06:22
finally, you can simply specify a precise commit when you don't want to see the code change When you perform updates when you just want a particular version The pinning system has Some properties for example, it's important to know that when you specify a pin this
06:42
this pin will satisfy the actual dependency no matter what even if the if the versions don't match so The moment you take the control from the dependency resolution with a pin it will always succeed Then you can also use projects that are not a liar crates
07:04
As long as they have a project file to build them with the same name as the Dependency you are filling with them And finally when you are pinning a liar project their own manifests will be used
07:20
To bring more dependencies and to use their own pins. So everything should work recursively as expected as you add pins to your project if they are a liar project in turn The pin system is not only useful for work in progress, but also is useful
07:41
for example to Segregate Examples and Test suits from the from a library that you want to submit for use and this is the The framework well the workflow that we suggest to use
08:00
Which you have your library That you want to submit to the community index and then you have subfolders that contain in turn other crates Which are crates for tests and for demonstrations and these crates as you can see there Can specify as a pin the dependency on the on the base library, which is the core of the project
08:24
but then this these Sub crates by being separate can bring in their own Dependencies they can build extract secutables that are not of interest for a client just interested in the library So they are distributed with your source code and they can be checked by an interested client
08:45
but they do not bring in unneeded dependencies or Increase the time of compilation and so on Thank you. I will continue on the new Features in a layer the next one we want to talk about is a create configuration
09:05
The idea is to declare variables in the crate manifest as you can see here on the slide These variables can be strings booleans enums integrals or reels For integrals and reels you can define a range. So a first and last value like you would do in either
09:24
It's also possible but optional to define a default value for each variable From this declaration a layer will generate an abstract GPR project file An Ada specification and also a C header file that is not shown here
09:45
So as you can see we see the the different variables being translated into a GPR or Ada In the GPR file this can be used for instance to select different set of sources depending on the value of an enum
10:03
In the Ada code, you can use the booleans to disable To activate or deactivate a feature or piece of code like printing debug logs You can use integers to set the size of a buffer for instance
10:20
And since these are all name numbers you can declare your own range types from them So on the other hand the crates that depend on a crate with with configuration
10:41
You can set the values of the variables of your dependency or dependencies As we can see here, we are in another crate that depends on my crate And we set the different values So we see a string, a boolean, etc
11:03
If one of the variable In the dependency tree has no value So either the default one or a value set by a dependency The configuration is invalid and a layer will return an error If two depending crates set the same variable to a different value, same thing, it's an error
11:24
And so in general, it's best to only set the values of your dependencies if you absolutely need it And so from these settings we can see the effect So for the my crate project, a layer will generate
11:43
Of course different sources based on the value that are set here Next we're going to talk about toolchains. We now have our own toolchain release distribution for a layer This release is based on the official GnatFSF releases
12:04
And it is built using public scripts running on Standard GitHub Actions workflow So anyone really can just fork the repository and duplicate the builds. That's really easy to do
12:21
And actually you have the link at the bottom here. The reason why we added Gnat distributions in that layer is that unfortunately Gnat is not available everywhere It's not available on all Linux distributions or sometimes JPR build is missing
12:42
The cross compilers are rarely available And so hopefully in the future Gnat will be Broadly available and we won't have to do the release in a layer. But for the moment, that's what we have So how to use the toolchain? Well for really most people in most cases
13:04
The only thing you have to do is when you start a layer, there will be a toolchain assistant That will ask you to select what the default compiler and default JPR build you want to use For most people just choose the default value. It's going to take the latest
13:22
And the latest Gnat and the latest JPR build and that will be What's going to be the default from now on and it's going to be good for most people But you have the option to don't use the Gnat distribution provided by a layer and use your system Gnat if that's what you want to want to do
13:43
So that's it for the new features. Let's talk about the future a little bit So first we have a few things that are already in the development branch of a layer that you can try Right now if you if you compile the latest sources So first we have aliases
14:02
This is if you're familiar with git aliases, this is pretty much similar in the user configuration You can define a command to be a replacement for a command and a set of options So here we have a layer graph for instance, that's going to be replaced by a layer show dash dash graph
14:24
We have a new a new way to pass Switches to JPR build. So with the Alayr build command, you can now add a dash dash and Everything else on the command line will be passed directly to JPR build And same thing for GPR clear with Alayr clear
14:44
So that's that's a way That's easier for for for some usage where you want to customize or you want to try a switch for for GPR build We also have a new command called exec which you can use to run a scripts or
15:03
executables in the Alayr environment so before that you had to maybe use printf to Set the to change the environment of your shell and then run the executable with this command. It's just easier and If you combine this command with aliases you can make things even more clear and easy
15:28
And the last one we want to mention is build profiles build profiles is a way for Alayr to generate a list of build switches That are going to be then
15:42
Produced in the create configuration JPR build JPR file, sorry that we saw earlier The list of switches depends on on on various things like the build mode You can be in release mode in validation mode or in debug mode And each crate can control and tweak the different switches for each mode
16:06
for instance if your crate is is written in spark and Proved to be free of runtime error, you can decide that in release mode you disable all the render runtime checks for instance
16:22
This feature is very new and we would like to have some feedback on it So please please have a look and let us know We have other stuff planned and or work in progress right now, this is obviously not everything but We are trying to get a good integration with NAT coverage
16:45
for Alayr projects so that we can produce code coverage analysis results and also integrate that with Cleanly with GitHub and online services like codecurve.io same thing for spark and NAT prove
17:01
We also have an idea about Template crates which would be Something that anyone can contribute to the index a template of a crate That users would Use to create a new project and for instance, we're thinking about
17:23
I don't know. I want to make a web application using a given framework Well, the people developing this framework can provide a template crate that will get everything Up and running for a quick demo and that people can start building the application or
17:41
Something for an application for a given microcontroller for instance So that's it for the Little snapshot of the future Now let's talk about the current state of the ecosystem and let's call it the Alayr universe
18:01
So I took a snapshot early January, but actually we are now over 200 crates in the ecosystem as we speak We have 21 of those crates that are for embedded and eight of them eight sorry eight of the 200 are written in Spark. There are
18:24
199 dependency link between the different crates The crates with the most dependencies Are listed here. So the the most dependencies so far is four and the crates most depended on are
18:43
Matresh Kalyg, Knatkol and Utileda and you will see you will see what it looks like in in a second We also have more than 8500 downloads of Alayr which is also a pretty impressive Okay, so now let's have just quickly I'm going to show you the
19:04
Closer look at the different parts of the universe. So we have the Matreshka Nebula, which is our biggest Group in the in the ecosystem so far, the Knapkol constellation, of course
19:21
the very impressive Karaz cluster and Last but not least the embedded galaxy So thank you for your attention. That's it for the presentation We also want to thank everyone Contributing to the Alayr ecosystem. We are looking forward to
19:41
more hacking altogether If you want to start Using Alayr, the point of entry is the Alayr.ada.dev website If you have any questions, if you want to chat with us or other users of Alayr, we have a
20:02
Gitter channel and The last link is the main repository for the project. So that's where you can open issues if you find bugs or if you have a feedback for us and also Maybe contribute to the projects So thank you again, and we hope to see you online very soon
20:36
I think that the digital world is optimizing video streams
20:42
So the Q&A should be now live and We can start with the questions and answers so Onnoz Has the most above the question and he asks if a repo has multiple crates tower files must be uploaded to GitHub
21:00
Will Alayr get better monorepo supports so that crates can refer to a folder crate Inside a repo instead of having to point to a tower file on GitHub Okay, so Yes, actually those past weeks. I've been thinking about this precisely and I
21:20
Have the change already in my mind the branch exists in the repository. So Some some some work in this direction in this is is next So hopefully you will be able to use a regular Git repository for us a folder for a crate and
21:44
maybe even You will get help to publish several crates at the same time Instead of going one by one creating all of them Okay, thank you The second question is also from Onnoz who asks will there be support for CPU extensions?
22:04
neon AVX, etc in case expressions So I'm getting this is related to the create configuration feature So, I mean, that's something we can consider having
22:20
automatically generated in the create configuration files Stuff like the post CPU or properties about the Architecture, so I think I think it's it should be doable to some extent Now the question is can we what can we detect and or not automatically?
22:45
But that's for this specific case. You can already define your own Create configuration viable to say that you enable this all that time Inscription set I would say clicks any comment
23:02
I'm not sure it's Very much related, but we also discussed with Fabian at some point being able to use their configuration variables in the case Expressions so that maybe could help also We may do some experiments in that direction Okay. Thank you. The next question is from Frederick. Are configuration variables
23:27
Already used in a drivers library. So a driver's library is not I mean I've met some bucket some crates and I are crates from the other library projects at this point
23:44
they do not use the configuration variables if you want to see an example of configuration variables, there's the atomic crates that's using it and I think the Fp2040 hal also using the quick configuration as far as I know
24:04
That probably the two crates using a configuration at this point Alex any comment Nothing on my part Okay, then the next question also comes from onyx He asks is is the name of the of the use build profile also exposed as an environment variable
24:29
It's so it's not exposed as an environment variable But you do have the the value in the generated in the ada and jpr build file So if in your project file, you can have a case expression
24:43
That depends on the value of the build profile If you Maybe you should have an issue on the repository to tell us what you what you have in mind with the environment Viable for the build profile and maybe we can discuss a bit further
25:02
this this question Okay, a question from me. Are there more architectures? Expected to be supported in alarm. I am not only referring to Hardware architectures are also operating systems such as previously I believe currently it doesn't have official support from other and
25:26
compiler tools I think the main blocking point here would be our ability to automatically test stuff In particular for for free based day, I think
25:43
Now As far as hardware architecture, I would really like to have some support on stuff like The raspberry pi for instance and these kind of things. But again, it's it's it's difficult to automatically test so in terms of quality assurance
26:03
It's a bit more difficult for us and and then the other part is having a way to to have the Host CPU architecture available in some of the case statements of the manifest and this kind of things That's what we discussed with the with the end also
26:25
so Well for for For a new operating system that can be tested in github I think it's simpler to add support because of course patches are always welcome Even if we are not able to test
26:41
every following submission But things that can be tested in our current setup with docker files and github actions In principle that should be easy to add For example Jeffrey harkarter asks. Can I use alert with a compiler other than ganet?
27:08
Well right now you could use it for to retrieve the dependencies not to drive the compilation But for there is nothing precluding that you get all the sources that you need and then you you should have
27:22
To prepare the compilation for this other compiler Right right now a layer drives gpr build and gpr builds is compatible with virtually any compiler you want. So the The focus point will be gpr build At least that's that's the status of the moment
27:42
Okay Um rr ee Asks. I have no experience with a layer so far Is it possible to include external build commands like make for generating data files or for generating documentation? Yes So I can answer uh, you you have pre and post actions. So a little little
28:04
comments that you can run before or After the builds for instance, if you look at the uh, sdl ada crate, there's an example of that There's a call to make uh that to generate some edf. So we already have the case
28:21
Okay, uh, stephan caress asks, is there a devian package for aller? Not to the best of my knowledge okay, we don't We don't do the yeah, sorry
28:41
Uh, so, uh, we are nearing the end of the q a if you would like to talk to fabian and mosser directly Please join this room. The bot will make it open in a few seconds And you can have a direct conversation or more questions