Bestand wählen
Merken

Meson: compiling the world with Python

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
reporting the welcome to talk um my name is using and I'm here to talk to you about built systems use when I talk to
people about the systems to reply I get is this which is that all these built systems were terrible and why should I care boat this look into this um if you were the keynote and 1 of the points made there was to expose it to say that don't build anymore Python extensions so with that in mind let's build a wife and 3 extension module and to make more interesting we're going to be using uh the C + + rust and for trend all in the same uh extension model and if you've ever done this with these details I salute you and but here's the height would look like if you would do the same thing with massive so the 1st you start thing by defining projects which in this case is called poly snake and there these languages that you wanna use and the next step there is this function were reimport pleasantries see internal module system that we have in this and and this Python 3 module has all the knowledge to build Python extensions and then we find a dependency and this uh what intimacies goes out to the system and find some what are all the the flags and and think of flights and all that sort of thing that you need to compile a Python 3 applications on Linux this would be going into complete and on other platforms it just a bunch of other metrics to the then we build a roster static library arrest is a bit special so we have to do it this way from but this is very quite quite simple and once you have that then we can start the actual extension model building so we call pi 3 modes DOS extension model and we get the names and then we list the source files that we want to have in it In this case the C. pile the cpp file and Fortran file as we as you can see we using the modernist 19 and not be as if the and then we tell it that we are want to link the rest library that would build earlier for this and then we say that the dependencies office project or the this is the python dependency that is there and this is the bill definition in its entirety this is all you need to write and then you can just compile and it gets and this is so within the the design goal so all this system uh which where speech you could see someone on the previous slide Our goal of like this so this the the platforms that we have today which is a Linux OS 10 windows these these in a much more than once we want to support all of them there are now several different compilers gcc client Visual Studio the Intel compiler want to support all of those but we tried to hide as much of the platform-specific differences as possible and including compiler flags and all that sort of stuff basically just want to say so I want to compiler warnings to be enabled and then we do that and we take care of all the back stuff for you and out of the box we should provide support for tools that people using today this very little point in having look like 7 thousand lined makefiles we copied bits from 1 place to another because this working 1 project maybe 2 works in this 1 as well but then it doesn't and then you're just that debugging for quite a long time and the major architectural decisions all of this system are not defined by what was in the default you learned of Sun was 3 . 5 circa 1987 because that's what the like for example orbitals it's it's it's an admirable backwards compatibility claim but like maybe it's time to let go the and at the very core of of mesoderm is the the domain-specific language that is used for defining these this is the thing that we spent most or energy onto like getting as good of definition language as possible and let's look at some of the design calls that we have the 1st we're gonna look at some of the design and Malta principles because and your product is defined by what it does not do more than it's defined by what actually dots especially if you have something that is complete but but things that too specific are saying that we're not going to do to help you make it a lot better designers and later on the so the main design thing is that million is not a framework there are a bunch of build systems which say that no this is not a build system is is a framework which which you can build the perfect build system for your project and this was a good thing to know we don't do that we have a very specific focused we do this 1 thing we do it well we do it on the and this there are going to build systems that are declined to languages and decoding languages are we also when they work but the problem is that when they don't work it's it's really really painful to depart and um because of this this uh Masson is not a declarative language and the um but we try . declarative as possible and it's not Turing-complete you can specify your own functions or recursion any of that and the reason for this is that makes tooling much more easier to write because it's easier to understand what the things actually doing the and this is Python it's good it it hides the fact that it's implemented in Python so it could be re-implemented in any language at all um what those with the not principles order on the actual design principles uh uh basically boils down to this extent every 2nd you spend writing body body build the Phoenicians is a 2nd wasted you're not being productive when you're biting build definition rules is just boilerplate stuff that you have to do so as to have this they love it as possible the understandability is the most important thing you should be able to look at the bill definitions like 1 filing isolation and have fairly good understanding of what it does and it's not like some sort of spooky action at a distance like it says here is gonna do something but actually there to something else would completely changed everything so we don't want to have any of that the um performance is important uh this scale to tens of thousands of files in a more and then you had to have have some performance builds in all of the court stuff needs to be properly done you can't really likes like bolt-on afterwords some sort of performance that is in a Python explicit is better than implicit also um and all that good stuff they should only be 1 way to do something and it should be obvious also so we stole that and basically we just steal everything that is good from anyone if there's any good there's no such thing as NIH if someone has to the thing that they're doing the we're not we're gonna steal it and wouldn't be proud about it and the other 1 thing is that the Bill definitions should be shorter than writing the exact compilation commands my hand let's look at an example hello world example looks like this is defined you project and then you say on a print executable which has this 1 file and this is characters and if you do it manually said CCW all all the stuff you compile the link and that's 54 characters so we didn't quite reach the goal however if you GCC things 56 characters and when that we also want to be usable across all 4 for every single time you use cats and the only dependency that we have is Python 3 and the only place in the and the standard library anything outside of that we are allowed to use any of that that's as an example there are a bunch of build systems that are implemented in Java the and and the problem there is that there are many platforms on which uh John cannot run and let us know CPU this of memory and all this stuff and and it's and dependency that a lot of projects can't take an even more project don't want to take but we want to be able to to support all those and Python is really because it's it's quite small
self-contained and it's everywhere and for designing we've been doing the net 90 slash 98 slash 1 rule which is that there's 90 % case and that should work out of the box because almost always this is the case because he this is only so many ways you wonder bill executable it with some sources that the 9 % case should be possible and hold the 1 % case we just like what you're doing is just so weird that we can support them and it would complicate everything else complete and like OK but if you do this other thing instead and we can just do that but it's it's totally OK for those who like the weirdest of edge cases discussed silicate began to put that out of the box you have to do so here on match and in practice this has been less than 1 % the so but it's still there and and there are already people using its that they're they're like 100 built systems usually must then how about to users and but we have managed to get some of them and 1 of them the major users thus far has been the cheese to multimedia framework which is a 100 150 plug-ins and base platform and all that good stuff and the using it to build on Windows and and uh OS 10 and the external this some and then there's a system the on the other so you don't know system these the 1st project but but 1st process that is formed in a modern Linux system to up like the manager process which take it takes care of all the other processes and they actually have a this outstanding uh built much proposal to remove order tools altogether so that starting from the next release their probably gonna have only mentioned uh for building as the exploring the graphical user interface so if you are uh Linux laptops you probably using 1 of those using that and if you're not you probably using Weyland that which is the the up-and-coming new graphical and who's ever been that has some uh built differences as well and western instead the reference implementation when dimension that uh the DTK widget toolkit uh which is at the Bacon's multiple foreign and and therefore series had that they they have merged the the all definitions going up I think they got some at some point it would have the old 1 but it's it's not not yeah happening as a lot of go party are going as well modulus and but you ones and the this deputy moment of the data which is also implemented in Python it's pretty cool project is told to get out and and on the web so we have a list of of men to other projects that are also also using this and 1 of the main reasons why people are switching into intermittent is that you get there are some fairly have to compile time improvements so sample that system B on Linux went from 60 minutes to compile to 2 minutes 32 seconds and if that seems weird to you it seems weird to me I went through the slides like 4 times at every single time I saw this ones like that can be right have 3 very violent and and and every single time but it's still 2 minutes and 32 seconds and then men ended so it's it's fairly heading a difference that if you are a complete Wayland on Raspberry Pi it went from 6 minutes 2 minutes and there's the the already which is a debugging tool kit and their cross compilation time to Iose went from 6 minutes to 1 has but in practice what we seem to find a status and um projects can go up to 10 to 20 times faster if the make based and um especially if you are on Windows wikis on windows they're file system operations are like the business low and uh because we don't use make an and they are not going to use to make ever so we don't have this problem and for incremental builds the difference is even bigger because there's a bunch of optimizations that do work skip relinking the stuff the and so we haven't done any tall large-scale tests with of the 2 generators lexemic for example has back and and but it seems that we produce slightly more efficient false but this is like but this hasn't been conclusively proven by the way so that there was talk about that built in support for stuff so we support and the sign so androcentrism resented you centers all stop he just likes doubles which they this enabled and then you have it the coach report precompiled headers can build all the things that you would expect and and likes can build is the static analyzer comes with playing and if you had installed at in the the this target called scanned building just like running and then it was a thing the and reproducible Bill that's of other interesting thing this the the the thing that's going on with the the and but for the projects we we basically want to prevent the injured per generation of of binary packages which have walls that are not in the original source so if you can produce from the same source files the same it's become bit identical binary files from the and even people often do this then you can be fairly certain that the binary this you have is actually a proper and you haven't been back and please don't support everything and within reason because there's no point in 1 trying to reinvent the wheel of highways support this you want to just but do it once in the core system and then of use the and we also have a if units as they were of running the tests and wishing cool stuff like uh sitting your environment to have set environment variables and command-line arguments and things to run and all that sort of stuff and we look up standard outputs and their how long it took all that good stuff and it is and it is gossip over stuff like relevant and all tests are run in parallel by default which is particularly nice if you are running relevant because then there about 10 to 20 x slower than that you you would be and you can see from the test suite multiple times you want to how you can run the tests on a GDP which is kind nice as well and then you can just run tests under gdb until they fail and then you just like leaving a machine learning if you have like a test and then you come back to it and all of this that the gdb prompt for the what the 1 in 1 thousand ones that actually failed which is kind as well and cross compilation all of course you have evolved canadian cross if you don't know what that means it's a prominent reporter he'd do know what it means and then it's probably quite important for you and and we support that fully and I felt a little Linux cross compilation it's being used a lot and there are people who compiled from the window so that they're using the mean GW properties that come with that is chosen they can just that generates all of their windows eating from their Linux distant machines that very easily and road works Iowa's works and also perimentally so you have an army nothing happening you can compose component and uh in increased but this in itself like uploaded targets and these sorts of things are easy to add and it when I'm doing Arduino development as much as well as run ninja upload which compiles and upload something it it's in that everything works the and there are very few changes in the built differences that are actually is and usually you don't need anything yet and has the same build definition because all the parts that have to do with specifying that the cross environment are not in the build files directly somewhere completely separate and but I believe many of you were thinking like the most obvious question which is always comes to people's minds when we talk about cross compilation uh which is what about their mental and Cobol development and I wanted to say that we just need to support that
so see uh there on the on the left you can see the Cobol program for running this external uh LCD screen and there's the screen writing the Cobol program there and this is and myosin working if you are in this that sort of thing on the have of the
other things that you could you link was compiling is that you can specify a sort of like it's you and this is a program that you can use your cross built files during the built so this usually include stuff like wine where you can run Windows programs or Q in which you can use to run uh like on programs on exceeds shape and this ties in nicely because you can have a code generator to compile and then you're using to generate more source files doing built so you can just run the executables as they are or you can specify that some of the executable should be built with the native compiler and not the cross compiler and you can just wonderment of probably run a bit faster and you can also run the full test suite of application which on its so that your that you can't run a full test suite for Windows when you're running 1 and so as an existing with will doing pretty well and it's a power for half years old the um and we have more than 100 contributors at this time and which is about monthly releases um and it supported on all of the major that is suppressed sold so did in federal than Susan and all those and they have missing indented default packet libraries at Cervantes repositories I we 1 very extensive to switch and they are the book emission we use for testing the limits part is about 2 and a half bits of of all the dependencies that is needed to run all the actual test and they're building stuff is it's relatively simple but the dependencies are what makes things everything heart so we spend a lot of time thinking about this and but so the way that works is that a mess and you can uh build any project as a subproject of a different 1 and it's running a sandbox environment so it can access stuff from the outside and so it's isolated but then from the massive project you can reach into his and and take stuff from there so this makes it possible to have your dependencies spider come from the system like on a Linux machine we just use the perfect conduc I'll stick dependencies or you can build them and the built definition file for both of these looks exactly the same you don't really care where the dependencies come from me to say I want this thing to be available and and this works cross-platform this there's nothing specific about it so Windows OS 10 and Android on to do is is if Europe the dependency that using compiles with mass on that platform then you can use it the and this is very similar to to rusts cargo or go D has a similar thing called top and I think go has something called go get um but the thing is that this definition is not tied to any specific language it's it's completely language language-agnostic so you could use it for any any language dependency and you get and this as a text is not for sort um and we have the uh this call rapidly being which widows these dependencies online as and this works until cooperation with disturbance so if you are district beta 1 of the things you hate more than anything else is of people invented the sources of the dependencies inside the packages and then they build those and then you have to rip them out and you and maybe they have changed and all that stuff so this works in the complete cooperation because you can just say that all I want is you know only allowed to use system dependencies and if you know having those and it's a hard don't try to compile the embedded source and near download anything from the internet so if you have then we must have must build all of your stuff without accessing the Internet we can enforce this is a big driver announced as text because look at at a dependency demo so this is a simple program that uses the lot and opens a bunch of PNG files so depends on block the PNG and then the PNG depends on Z like and this is what
looks like so there's the the uh bill prevention file and this signals
so the C source file and his subprojects folder which will look into a bit later so if we can build file the it looks like this so basically just defined project and then you say that you have these dependencies which are likely painting and the fallback since that that high of where the fall-back dependency so this in this approach is called look orderly painting Hey and then you just say I want Bill executable and then these other tendencies that I have so and then the subproject folder looks like this and it only has these these 3 files which are called wrapped files and if we can't 1 of those then it looks like this basically it's just an Europhile where you download the source files and then the heart hash code full for find that there actually that the real thing they haven't been at MIT ement to the source file in this the the patch file which in this case adds to the mess and build finishes because the original approach it doesn't happen the and then you start with a rumba the configuring step as it looks like they exceed almost a painting uh and it gobbles the pants and it does all the patching and uh as you can tell it's estimated dependencies z upon yes so in this case the that was available in the system so it doesn't download and build itself just use the system and then if you compile it it looks like this and this 39 the compilation steps for lowly panties at lip and expect executable and and that's it and this still works works on all the platforms where the the PNG said look and luck are available and this is quite
interesting in itself but what can we do with this so and how they have the same with it's time we need to go deeper the minutes old go all the way down and
chief of Python section the and ask the
question but can you compile c Python with
itself well it's find out uh his stick
out of a face the Python repository which I took
from the from the masses sometime ago and I wrote some of the that bill definitions and they see running the command and it's run on the configure to get all the things in there uh objective functions size of things all that and then you run the bill can the which looks like this so you respond 143 but to compile warnings and and at from compared to the stuff you can make this economize because the only thing that is visible all the compiler warnings and it's not telling the going this rectory undergoing restricted undergoing this by coming back and I'm going to bed and all that goes away because you don't care what this and then if you run the compiled Python with the stage then you get they help output from the regular python executable but which is this continent but compiling the Python on Linux is not actually that difficult and it's it's fairly straightforward the so let's go deeper what about Windows so here's the screenshots of
running on Windows 7 I think with Visual Studio an the labor freezing is infinite wisdom has decided to scale this picture down for some reason so it's a bit blurry but uh they can see it running all the same tests and then if you run the compiler and then you get this and this I don't know what those ones are but they don't seem to matter and then if you tried to run generate executable In the same way as certainly in what you get is this error
message which I don't know what it is because I don't really do much windows open has kept complaining about some missing DLL but ignoring that basically it works um the Adelaide fixing the rest is left as exercise to read that's not so look at the performance numbers of
of this thing by going here knows how big
the configuration file is in uh 0 sorry to and one's life so on my four-year-old but I 3 8 7 7 with a course that the configured time on tools it takes that in seconds the and witness and takes 6 seconds which about 50 % build times 31 seconds went goes down 16 which again about 50 % faster the uh also run tests on rats reply to and configure time that is 3 minutes and 11 seconds and went to 1 but it was again about dozen faster the bill time is is from 9 minutes to Four have which is again about 50 % so so 50 % improvement over all its them this is not entirely fair because it's not building all but all the same things but it is roughly about same and so build affinity sites and so holy commentary here no hope they configure ACS on Python yes this anyone so the correct answer is they support policies by thousand 477 lines if you haven't read it I had recommended to do because it's it's both terrifying and always playing in the same as that exactly the same time it has still support for stuff you can even know existed and ends probably older than most people in the room and in addition to that system make Dr. predocs in which as you can tell leastwise templated and that's as 17 hundred lines and and this some make false in the subgroup is but I think of those so in comparison uh the mess and bill for the same it's 629 lines which is a little like slightly less um this only includes the building the core and essential modules that are part uh and this has only been tested on Linux which is C and windows on Visual Studio socialists properties needs some work on some other ones and but on the other hand we still have about 6 thousand licensed spare until we reach the same same uh modif of closest that's the first one so I'm fairly confident with that that's achievable the um but can we cut deeper the um so he something I thought up and as far as I can tell this kernel possible but it's it's completely feasible to do 1 of your Python compilation when something like this so 1st you compile enough court code to compile the parser or and then you compile the standard library that you have from PI PI evolves to p y c files and then using a very simple scripts you compile those PIC files into C libraries and out of what's your rates so a C file and update all listing those things the right and then he compiled the rest the Pythons and all the rest of your application that you want and then you link the Python core plus 2 modules plus the standard library that you build as raids staticflickr and this gives you a you fully self-contained programs copying and you can write and doesn't need to unpack anything doesn't need any file system access or anything it there's no possible way that you can read the wrong P Y heIl's because if only x axis axis of them there are inside your own executable so this would be a sub projectable Python and the things you can do would be is basically like freeze hope I to be IXI or there's a seeming Python which is a bit like this but if you hide inside the build system and its inside the the the core building of the language itself that it works on all platforms and all use cases of the box the and then you can create a cross-platform the conditions where he ended up because it's just 1 dependency and just it and suck colored and stuff starts happening and you can ship actual EXE files and there's no file extension service anymore uh 1 of them the pain points in cross-platform development in this and that we had is the shebang line because on Windows you must have the 2 p y extension because otherwise it doesn't work on other platforms you mustn't have them because that's the dis rules say you can't have them somewhere they're user been Python points to Python to so it points by the tree and it's like it's in it's enormous mass and Python EXE itself goes away then all of these problems go as well the your applications don't require Python to be pre-installed on Windows especially good thing and they don't try to use the wrong words and by accident you get grip symbol dangling thing look elsewhere so other symbols come from this deal some come from that 1 and then you can complain this week that gtk or would be where am which is a great project for creating a ball multiple from we application the then you can ship all the platform GRE applications which you can compile from your own sauce into this like full executables and just ship them and you users don't have to think about any of that and going over there so there was a presentation by I think just report how they're using Python where they compiled and the boot directly into you if I want you to do that you could have bare-metal support inside the Python so Python a big sort of like a micro less micro Python where he helped but sigh the bigger thing anyone to control it completely from Python go ahead you can do that and they're bad people run containers then he can do stuff like you you lose kernel and you are the only process that is on the system is the Python processes is just a single process you launch them and this has interesting implications because most exploits in the world to try to do it at all in a shell on the target machine if Europe system doesn't have a shell at all all these things are working which come and and there's all sorts of like sort of scale things that you can do because you don't have at your uh images that you want are very small so um winding down so in conclusion and python is set to become a core dependency for signal in a fraction of the lexical but hasn't been there producing uh make and shell and all K and T are considered and all those wonderful tools that we know and some love and that's a which are assessed complete not maintenance nightmare so those are all going to go away eventually which is which is nice and and 1 of the main things that comes from this is that everything will become faster so m for those who don't know if you run a shell script and you do a string comparison we actually Darcy's they sponsor new process the every time you compare 2 strings and especially in Windows with process spawning the slow uh then this like just being able to do in the process string comparisons is a massive game the and if we have this new set of tools which we use of things the new things become possible and so which we probably don't even realize it as a coming back to the original question was that's all built systems a terrible and why should I care so m in conclusion what I would like to say is that the reason you should care is because some built systems are actually fun exciting visiting my talk that thinking that out of 4 questions and if this were the question
number bias to the is this the feast figure mentioned to uh dolphin idea all from partial of we can look the so that the list is oversight OK but it could so that of this this 1 so this is
not at the moment down it's it's oscillate could be done I'm In in theory by someone else if is how these things always go but there's nothing like inherently difficult about this success work is to be done to like you need them well I'm asset sample if you and don't I'm not entirely sure if in Python modules the entry point is always means the same it is then obviously can't because all of the the things go in the same the same executable so that they have to have a unique names but as an example DG streamer the multimedia framework which is like 150 plug-ins they have all the monochromatic necessary such if you're compiling dynamically shared libraries and they all get the same name if if you're components statically than any unique things and something like this would need to be done if there are duplicated symbols that are not part of the the of the like actually tells sparse and
thank you very much to talk um I'm curious how you make sure that Mason is still fast when you make a change so care of asset we have the the testing framework which is in place and that they have because so currently when we run it takes quite a long time so if it gets lower we will definitely notices quite quite quickly in fact and 1 of the biggest problems that we can only have a stats Due to some in other parts of the things we have to do things a bit slower but only in CI in in regular use it doesn't matter is only an issue that comes up before CI we have to do some fudging and because of that it's like to explore lower but but it's still to Professor on and we're very much counting on the fact that people are running a building their stance against and we slower this bicycling and will fix it the great thank you very much they have and then do another question so you talked about compiling fall for Windows Phone 6 and so on and so on consider I have to do to products and it's an embedded prorenin have some of the some of the microcontroller can I use isn't to to work with some of them not yet known compiler and which are recommended so the currently we always support the compilers the there so that's GCC plant ICC and then like to 10 different Fortran compilers which some guy contributed them and we don't you can compile the compiler that's not specifically support because we need to know how you run that and but if you want to add this we are open for patches will of practice if you if you send in and it's not actually that difficult so that the language support for the was added by 1 guy who had never seen the codebase before in about 2 days and just adding and a C compiler in existing C compiler would probably not be that much for 2 so that means that you will come in the have predefined rules for compiling what if i in the project I want to have my dedicated alarm and options sold I want to change optimization levels and or on what else is is possible is that Is it possible was was met already that's impossible because the rules already closed and so what we do is that this predefined target builds on the optimization types so this and just divide this optimized for speed release and minimum size and then there's the uh nothing at all and then you can specify your own compiler flexed and that we just use those and we don't use any of our city 1 override that's another question now pages of edge and the next are reportedly done by Nicolelis so that in some minutes thank you
Domain <Netzwerk>
Bit
Punkt
Compiler
Hochdruck
Formale Sprache
Applet
Snake <Bildverarbeitung>
Kartesische Koordinaten
Gradient
Service provider
Intel
Client
Umwandlungsenthalpie
Geschlossenes System
Standardabweichung
Fahne <Mathematik>
Bildschirmfenster
Visualisierung
Default
Zentrische Streckung
Lineares Funktional
ATM
Geschlossenes System
Gebäude <Mathematik>
Ruhmasse
Quellcode
Biprodukt
Entscheidungstheorie
Rechenschieber
Software
Twitter <Softwareplattform>
Festspeicher
Deklarative Programmiersprache
Facebook
Projektive Ebene
Programmbibliothek
Ordnung <Mathematik>
Computerunterstützte Übersetzung
Standardabweichung
Quader
Briefträgerproblem
Sprachsynthese
Zentraleinheit
Systemplattform
Framework <Informatik>
Hydrostatik
Programmbibliothek
Modelltheorie
Abstand
Maßerweiterung
Stochastische Abhängigkeit
Modul
Zehn
Affine Varietät
Linienelement
Orbit <Mathematik>
Paarvergleich
Schlussregel
Domänenspezifische Programmiersprache
Binder <Informatik>
Elektronische Publikation
Modul
Quick-Sort
Office-Paket
Verschränkter Zustand
Surjektivität
ICC-Gruppe
Speicherabzug
Textbaustein
Modul <Software>
Bit
Punkt
Prozess <Physik>
Momentenproblem
Sampler <Musikinstrument>
Compiler
Minimierung
Binärcode
Computeranimation
Eins
Softwaretest
Einheit <Mathematik>
Geschlossenes System
Vorzeichen <Mathematik>
Bildschirmfenster
Dateiverwaltung
Default
Parallele Schnittstelle
E-Mail
Funktion <Mathematik>
Softwaretest
Suite <Programmpaket>
Nichtlinearer Operator
Vervollständigung <Mathematik>
Kategorie <Mathematik>
Gebäude <Mathematik>
Reihe
Programmierumgebung
Quellcode
Wiki
Software Development Kit
Rechenschieber
Arithmetisches Mittel
Generator <Informatik>
Mailbox
Benutzerführung
Projektive Ebene
Ordnung <Mathematik>
Multimedia
Subtraktion
Quader
Zeitdilatation
Multimedia
Hausdorff-Dimension
Mathematisierung
Implementierung
Systemplattform
Framework <Informatik>
Systemprogrammierung
Virtuelle Maschine
Benutzerbeteiligung
Variable
Multiplikation
Binärdaten
Notebook-Computer
Widget
Stichprobenumfang
Softwareentwickler
Meta-Tag
Elektronische Publikation
Matching <Graphentheorie>
Affine Varietät
Zwei
Einfache Genauigkeit
Schlussregel
Mailing-Liste
Plug in
Elektronische Publikation
Quick-Sort
Komponente <Software>
Mereologie
Identitätsverwaltung
Speicherabzug
Compiler
Verkehrsinformation
Demo <Programm>
Bit
Compiler
Formale Sprache
Virtuelle Maschine
Kartesische Koordinaten
Fastring
Systemplattform
Code
Internetworking
Service provider
Virtuelle Maschine
Perfekte Gruppe
Geschlossenes System
Bildschirmfenster
Programmbibliothek
Inverser Limes
Generator <Informatik>
Optimierung
Default
Stochastische Abhängigkeit
Touchscreen
Leistung <Physik>
Umwandlungsenthalpie
Softwaretest
Suite <Programmpaket>
Shape <Informatik>
Dokumentenserver
Betafunktion
Gebäude <Mathematik>
Stichprobe
Systemaufruf
Ruhmasse
Humanoider Roboter
Quellcode
p-Block
Elektronische Publikation
Quick-Sort
Portabilität
Druckertreiber
Mereologie
Projektive Ebene
Caching
Pell-Gleichung
Bit
Compiler
Gebäude <Mathematik>
Quellcode
Elektronische Publikation
Systemplattform
Computeranimation
Patch <Software>
Erwartungswert
Softwaretest
Geschlossenes System
Prozessfähigkeit <Qualitätsmanagement>
Hash-Algorithmus
Videospiel
Dezimalsystem
MIDI <Musikelektronik>
Projektive Ebene
Ordnung <Mathematik>
Lipschitz-Bedingung
Objekt <Kategorie>
Inklusion <Mathematik>
Decodierung
Elektronische Publikation
Dokumentenserver
Compiler
Ruhmasse
Gradient
Gerade
Variable
Computeranimation
Interaktives Fernsehen
Globale Optimierung
Einheit <Mathematik>
Bildschirmfenster
Garbentheorie
Compiler
Konfigurationsraum
Funktion <Mathematik>
Softwaretest
Arbeit <Physik>
Compiler
Bildschirmfenster
Gefrieren
Visualisierung
Zahlenbereich
Message-Passing
Fehlermeldung
Eins
Bit
Prozess <Physik>
Punkt
Nabel <Mathematik>
Compiler
Formale Sprache
Kartesische Koordinaten
Computeranimation
Untergruppe
Kernel <Informatik>
Netzwerktopologie
Geschlossenes System
Bildschirmfenster
Speicherabzug
Visualisierung
Dateiverwaltung
Skript <Programm>
Gerade
Softwaretest
Bruchrechnung
Zentrische Streckung
Addition
Geschlossenes System
Kategorie <Mathematik>
Gebäude <Mathematik>
Ruhmasse
Exploit
Bitrate
Softwarewartung
Dienst <Informatik>
Menge
Rechter Winkel
Konditionszahl
Projektive Ebene
Zeichenkette
Web Site
Quader
Disk-Array
Gefrieren
Gebäude <Mathematik>
Kombinatorische Gruppentheorie
Systemplattform
Code
Systemprogrammierung
Virtuelle Maschine
Multiplikation
Spieltheorie
Programmbibliothek
Affiner Raum
Softwareentwickler
Maßerweiterung
Optimierung
Konfigurationsraum
Bildgebendes Verfahren
Videospiel
Affine Varietät
Booten
Konfigurationsraum
Zwei
Systemplattform
Schlussregel
Symboltabelle
Paarvergleich
Elektronische Publikation
Modul
Quick-Sort
Portabilität
Mereologie
Ruhmasse
Speicherabzug
Wort <Informatik>
Benutzerführung
Multimedia
Punkt
Momentenproblem
Eindeutigkeit
Magnetbandlaufwerk
Zahlenbereich
Mailing-Liste
Plug in
Symboltabelle
Framework <Informatik>
Physikalische Theorie
Komponente <Software>
Mereologie
Stichprobenumfang
Programmbibliothek
Figurierte Zahl
Softwaretest
Bit
Extrempunkt
Minimierung
Compiler
Mathematisierung
Formale Sprache
Statistische Analyse
Schlussregel
Mikrocontroller
Biprodukt
Framework <Informatik>
Übergang
Homepage
Konfiguration <Informatik>
Patch <Software>
Regulärer Graph
Bildschirmfenster
Datentyp
Mereologie
Projektive Ebene
Funktion <Mathematik>

Metadaten

Formale Metadaten

Titel Meson: compiling the world with Python
Serientitel EuroPython 2017
Autor Pakkanen, Jussi
Lizenz CC-Namensnennung - keine kommerzielle Nutzung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen 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 und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben
DOI 10.5446/33730
Herausgeber EuroPython
Erscheinungsjahr 2017
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract Meson: compiling the world with Python [EuroPython 2017 - Talk - 2017-07-10 - Arengo] [Rimini, Italy] Compiling source code into libraries and executables has always been problematic, especially for cross platform projects. Typical problems in existing build systems include slow build times, undecipherable syntax, lack of support for cross compilation and so on. Some people choose to not use a build system at all but instead just write a one-off Makefile, which will usually work fine on their machine and nowhere else. All this makes software development slower than it needs to be. The Meson build system (http://mesonbuild.com) is a new build system designed from the ground up to provide a solution for these (and other) problems. It is implemented in Python 3 and provides a simple, non-Turing complete DSL for describing the build. The project provides built-in support for common tasks such as documentation generation, building Qt apps and Python extension modules. Meson is currently seeing a lot of uptake in the Free software world with big projects such as GStreamer, parts of GNOME, Wayland and even the X server either transitioning, or very strongly considering the transition to Meson. In this talk we go over the design of Meson, how to use it for new and existing projects and the benefits this brings, including faster compiles, less time wasted debugging the build system environment and easy access to modern software development tools and practices

Ähnliche Filme

Loading...
Feedback