Php 7

Video in TIB AV-Portal: Php 7

Formal Metadata

Php 7
Alternative Title
Php And Friends - Php 7
Title of Series
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date
Production Year

Content Metadata

Subject Area
Category of being Personal digital assistant Semiconductor memory Videoconferencing Software testing Right angle Theory Form (programming)
Logical constant Code Multiplication sign Sheaf (mathematics) 1 (number) Set (mathematics) Water vapor Parameter (computer programming) Client (computing) Mereology Vibration Optical disc drive Array data structure Object (grammar) Entropie <Informationstheorie> Data conversion Recursion Internationalization and localization Information security Social class Physical system Beta function Logical constant Arm Electric generator File format Namespace Gradient Moment (mathematics) Physicalism Bit Complete metric space Website Normal (geometry) Right angle Quicksort Information security Electric generator Reading (process) Web page Functional (mathematics) Service (economics) Codierung <Programmierung> Patch (Unix) Streaming media Field (computer science) Element (mathematics) Number Revision control Read-only memory Internetworking Namespace Inheritance (object-oriented programming) Poisson-Klammer System call Voting Function (mathematics) Blog Vertex (graph theory) Social class Object (grammar)
Logical constant INTEGRAL Code Multiplication sign Execution unit Set (mathematics) Parameter (computer programming) Unicode Variable (mathematics) Formal language Software bug Spring (hydrology) Mathematics Endliche Modelltheorie Extension (kinesiology) Information security Error message Social class Scripting language Arm Software developer Electronic mailing list Infinity Bit Instance (computer science) Sequence Oscillation Demoscene Connected space Type theory Process (computing) Endliche Modelltheorie Right angle Pattern language Quicksort Escape character Cycle (graph theory) Spacetime Metre Point (geometry) Trail Functional (mathematics) Open source Sequel Computer file Sigma-algebra Control flow Streaming media Field (computer science) Number Revision control Latent heat Goodness of fit Escape character Term (mathematics) Profil (magazine) Internetworking String (computer science) Operator (mathematics) Energy level Codierung <Programmierung> Traffic reporting Metropolitan area network Default (computer science) Operations research Default (computer science) Information Interface (computing) Operator (mathematics) Planning Database Basis <Mathematik> Cartesian coordinate system System call Personal digital assistant Function (mathematics) Network topology Statement (computer science) Speech synthesis Iteration Object (grammar) Fiber bundle Extension (kinesiology)
Discrete group Axiom of choice Context awareness Group action Execution unit Workstation <Musikinstrument> Shape (magazine) Computer programming Variable (mathematics) Area Medical imaging Fluid statics Array data structure User profile Atomic number Core dump Error message Monster group Physical system Social class Mapping Block (periodic table) Constructor (object-oriented programming) Electronic mailing list Stress (mechanics) Uniform convergence Sound effect Bit Sequence Category of being Arithmetic mean Process (computing) Hash function Oval Order (biology) Quicksort Hacker (term) Web page Point (geometry) Aliasing Sequel Patch (Unix) Maxima and minima Control flow Data storage device Element (mathematics) Number Product (business) Latent heat Escape character Term (mathematics) Hacker (term) Representation (politics) Data structure Namespace Compilation album Metropolitan area network Key (cryptography) Information Operator (mathematics) Generic programming Cartesian coordinate system System call Symbol table Loop (music) Algebraic closure Personal digital assistant Network topology Iteration Table (information) Library (computing) Building System call Run time (program lifecycle phase) Interior (topology) Code Multiplication sign Direction (geometry) Set (mathematics) Complete metric space Parameter (computer programming) Function (mathematics) Mereology Bookmark (World Wide Web) Formal language Mathematics Bit rate Semiconductor memory Arrow of time Extension (kinesiology) Area Electric generator Data storage device Variable (mathematics) Flow separation Type theory Array data structure Fluid statics Vector space Uniformer Raum output Right angle P-value Resultant Asynchronous Transfer Mode PC Card Functional (mathematics) Web browser Graph coloring Theory Revision control Causality Average Pearson product-moment correlation coefficient Operator (mathematics) String (computer science) Integer Software testing 7 (number) Consistency Projective plane Expression Boilerplate (text) Interactive television Mathematical analysis Database Subject indexing Pointer (computer programming) Speech synthesis Object (grammar) Near-ring
Kernel (computing) Vector space Personal digital assistant Code Multiplication sign Parallel port Right angle Mass Quicksort Mereology Event horizon Number
Java applet Source code Mechanism design Array data structure Core dump Error message Exception handling Social class Mapping Electronic mailing list Sound effect Instance (computer science) Unit testing Complete metric space Category of being Arithmetic mean Process (computing) Facebook Chain Order (biology) Quicksort Web page Point (geometry) Flash memory Control flow Online help Student's t-test Product (business) Element (mathematics) Goodness of fit Hacker (term) Form (programming) Default (computer science) Graph (mathematics) Interface (computing) Line (geometry) Cartesian coordinate system System call Word Hypermedia Algebraic closure Personal digital assistant Network topology Statement (computer science) HTTP cookie Library (computing) Morphing System call Code Ferry Corsten Multiplication sign View (database) 1 (number) Insertion loss Parameter (computer programming) Mereology Formal language Web 2.0 Facebook Algebraic closure Series (mathematics) Extension (kinesiology) Lambda calculus Injektivität Scripting language Reflection (mathematics) Attribute grammar Price index Flow separation Connected space Type theory Vector space Website output Right angle Bounded variation Resultant Metre Laptop Functional (mathematics) Server (computing) Implementation Existence Link (knot theory) Login Graph coloring Attribute grammar Wave packet 2 (number) Twitter Natural number String (computer science) Operator (mathematics) Software testing Task (computing) Boilerplate (text) Database Performance appraisal Bootstrap aggregating Logic Object (grammar)
Point (geometry) Web page Implementation Run time (program lifecycle phase) Software developer Code Multiplication sign Mereology Formal language Revision control Facebook Array data structure Different (Kate Ryan album) Software cracking Stability theory Exception handling Boss Corporation Arm Mapping Run time (program lifecycle phase) Projective plane Bit Ripping Group action Flow separation Equivalence relation Demoscene Type theory Arithmetic mean Process (computing) Network topology Escape character Quicksort Hacker (term) Row (database) Directed graph
Group action Run time (program lifecycle phase) Code State of matter Ferry Corsten 1 (number) Set (mathematics) Formal language Facebook Medical imaging Coefficient of determination Response time (technology) Software framework Data conversion Error message Mapping Moment (mathematics) Instance (computer science) Variable (mathematics) Flow separation Parsing Type theory Message passing Arithmetic mean Exterior algebra Process (computing) Facebook Website Right angle Quicksort Figurate number Hacker (term) Conformal map Row (database) Web page Point (geometry) Functional (mathematics) Implementation Service (economics) Computer file Branch (computer science) Mass Frequency Latent heat Hacker (term) Term (mathematics) Divergence Reduction of order Software testing Absolute value Key (cryptography) Projective plane Physical law Basis <Mathematik> Line (geometry) Human migration Word Personal digital assistant Search engine (computing) Network topology Formal grammar Object (grammar)
I have the eyes and the eyes I n testing theory right yeah the the Tunisia back now I have to project the this year in the form of the way now in the case 0 you have a video on the human gene let's great so I'm going to have the the memory and this fantastic Lisa warm health insurance elephants never forget the end the saying and that the more you have the property kind of apparently of jumping the gun I'm getting started to so let know was really thought thought the the as I said for an interrupt me diffuse the cost of this for any purpose the questions are telling slow down or whatever it happens to be and I will try not to speak too quickly so be 7 let's talk about that because the the it's coming it on its way are we're not really sure
exactly where that's going to land on we are aiming for autumn sometimes september originally as late as November on I'm expecting we want actually see it into told begin April May of 2016 but taking bets on giving good answers will see wetlands but before we talk about the future when needs have passed a
little bit because some of you are living in the past and it's time to come into the light sequential hands how many people actually have sites the running of 5 . 3 but that doesn't surprise reinforcing because as you can see 45 . 8 % of sites out there on the internet are running 5 . 3 specifically plus another 24 5 . 2 and fortunately diminishing number beyond that of that means that 2 thirds and the other well I mean I mean get set because phi 1 will it's dead it's gone it's not supported in war 5 2 that died cuddly years ago it's writing in the field if there's no 5 2 5 3 yes all the people who raise your hand during dead version of PGP it is not supported underwater center to you this morning I'm a reaI reiterated again because it's worth saying were not even applying security patches that anymore the only person supporting you is maybe your destination mainly on if something comes along and there have been a few CDs I'm not gonna which ones they are a new or potentially vulnerable to some bad stuff get off of 530 agreed 5 4 right note that the crosses as Sebastian just in the last talk but by the end of this year that's not can be supported at all anymore either that means in 4 5 5 0 5 6 the good news for all of the 3 5 3 is raise your hand the upgrade path from 5 3 2 5 6 even a section really the payments but it hurts a lot less than a lot of a grades stupid especially considering its 3 minor resources on there are some issues from 5 to encode 3 you would do that kind gently but from 5 3 5 6 it it at almost does occurred at all you get things speed improvements get access to a lot of features there's no good reason not to so whether it's you or your client's site this remember that saves time from 5 6 that so I recovered the stuff you know two-thirds is a horrible number to be unsupported it's an embarrassing number so let's let's move that forward come on this blog to use conventional water talked about these this morning on this some cool stuff in the vertices i a sugary snacks everywhere now I had a run something on my Mac book which had 5 3 on it is like other in y you have the square brackets here all right because that is supported by a luxury syntax and traits are great for composing classes I do a lot of C + + works I have multiple inheritance any the boost here Anita Hill some other class they're not having multiple inheritance I didn't think it would away and it really does on traits college you around like a set of experiments there is actual big chunk of this beautiful between 5 3 5 6 is between 5 3 5 4 your code will run faster your users will get their pages quicker you'll have to run less services are all the things there is no negative honest 5 6 introduces generators and co readings but if you come from a Python back you might be familiar with generators already on the pretty cool for doing so asynchronous but of code you can say ah and often in this thing and I'm kind of in the middle you process going to something else at the same time it's attention deficit disorder for PHP and it actually makes for some really good code that said but you're not going to start throwing everything into generators the it is it is a picture moments sort of like but Gustaf they're a handful turn the needed generators should mainly code so much simpler and it of better it's all support to the you converter stuff on because you've got icon that in the stream with all these different things were trying to search for all the in internationalization stuff you convert which is very handy on but was here only speaks English right I know this site so from know it when we were so this stuff this is for each syntax is here array as West so if you have like 2 dimensional kind of arrays and you want to be able to get the subkeys out of the arrays that are in your arrays makes it really easy there at these things out syntactic sugar and seized right the muscle after and owner really at a speed freak out by 6 very exons blacks the system will how many people have got at least 1 call use of Hungary in the code is an anomaly and the end just the the most disgusting PHP thing that you have ever seen the black into a format I recall user func through with an array of argument it's gonna unpack those so the elements of the arms race and the argument 0 1 2 3 4 on 24 5 if you want 1 based we're in very attics that allow you to avoid those of fungi get odds very acts say I don't care how many arguments are passed me just put them all under disarray and then I can iterate through that or pick up specific norms it's getting rid of those ugly little works and that alone is worth 560 on the on the import functions and constants specifically for namespaces rather than only classes which is this sort of completeness thing debug until I like because sometimes bottom in object to get this huge recursiveness when all you really need to know is what are the essential parts of the UK where the sentiments so that's I 6 by 6 at the end of the vibration will be 0 5 7 we think I would pretty sure the no-fly 7 there was a vote on it and 5 . 7 was voted down so don't of huge physics right page 3 6 was suppose to
be released 5 years ago I think years ago some of you were still in like secondary school 5 years ago we had this great idea that were applied you know could support deep into the language so you only not to think about converting character the encodings you can just all right all natively leaders can be beautiful in panacea and on a number of the trouble with that is and nobody really entirely by into a like nobody was saying this is a problem that that I need to solve it was more like well academically pure we need to look like languages like Python or something that always use your full and the report iteration but we need to be a language was well-intentioned but like to be on the blossom of axonal support thinking right before it was it was driven by need and PHP is all about being driven by need it about the Open Source process really and 1 place to talk about open source right it's about that is wants to get his resinae online enviable track his visitors that's what PDP it's as a repeat field bad for almost 20 years so PhD died purely from lack of enthusiasm because of that it doesn't the but Peachtree 6 was enough of
thing it was enough people's hearts because what people did put a lot of work into it to try and make it that academic and your thing that we sort of feel like Nietzsche retired strictly if like a football player whose you know it's I write metaphor for this but when he retired number so the it's OK we have until infinity there's a few numbers left which is called the next PHP 7 and no harm done although weirdly that was a big argument for this fact so officially 7 units well it's 10 years since the last major version 10 years children have grown up and started programming in this time it what are we doing well a lot of these changes that were trees and 7 have to do with us sort of the internal workings nothing in the world we see is the present uh and developer of the language the wouldn't wanna say this point where the out of the variable model has been completely redesigned this is a very positive thing because it means that were about twice as fast as Peachtree 5 . 6 was what have taken but it also means that only in extensions you depend like maybe say xt bugs or so many profiling tools or maybe that database connected that you need access to they're gonna break so they need to be fixed don't we're also adding of some things you will see a return type since had actually been approved and merged you now say my function will always return or a or it will always return an instance of this particular object which is good for you and integration make sure your code has a nice clean quality to it on everybody's happy little stuff you could stick skate sequences we need deep you could ratio we have UTF-8 the anyone not using UTF-8 as the intro encoding for the application well because UTF-8 is a language of the Internet and once this is gonna talk to another and it leads to something other than asking why would you use anything more than American simple code for information the change I you should say is what you talk so we're just going to say this is good enough in terms of deep immigration because this fixes the job this scratches the at this and get something done and that speech is way of but the yes it well I'm to 368 will translate into a 4 by UTF-8 sequence I don't remember the exact by tough time and I'm going to get into the 68 is by the way no is not so much no man is in the Basic Multilingual Plane error go you would only have 4 the but this to something I forget the exact number but the the so spending coming industry including were actually you define other questions 1 of his books of support for scripting coding internal encoding of were actually unified those into and we hope a single setting the quite settled down yet so there's it's a little bit too spread out between a and B strings notion of scripting coding versus icons notion scripting cutting that sort of thing for unified that into a single thing so what in terms of these escape sequences it doesn't matter access you curly brace Texas enquiries is always UTF-8 of those settings really only matter that's where do they matter so I think that matter in terms of default settings of a so much for my application is going to rent engage because of time the script encoding is UTF-8 and I have good reason to change we're looking at that leverages of fewer things invites us more it's it'd oscillations support to the int'l car class are this is mostly introspection kind of stuff how you translate to 368 into Cantonese for small chicken so if anyone knows my username meter that's the connection completing Smalltalk and Spanish of coalesce operator this is sort of like your if there were 2 ternary except we're actually doing anti checks on the variable so we say if request was 9 and said that's often created error is just as a user default or otherwise use the value of the request for of this is really common pattern and a lot of people using the code all over the place so it's really arm and this is sprinkling on getting rid of a whole bunch of old stuff all go into the specifics but like my sequel any red actually gone up in terms of bundle extensions if you're still using the base my sequel extension then you have some very old called it's probably time to look at my sequel wire PDO use prepared statements I'm sure some he's done a discussion of security by now to tell you why that's a really good idea because it's a really good idea choose prepared statements of very things that haven't even been agreed upon yet these are things that are basically on the RFC list you can get your bottom and see the whole list for yourself with pretty long these sort a highlights and some of the more likely to pass things grouped this space using answer having to say in this case useful of RA you suburbia scenes were C of you just say use of our and any specific classes functions are constants within an interface allows you to do next grouped important Mexico but later scalar type so hitting it with apply for the go-ahead to so we have some type can support in pp for along time they function takes an array or an instance of a class or call on this completes the picture by land use type out instance streams and things like that the reason PHP haven't had this for years and years and years is as we can't agree on how to behave what happens if you call this so function the the 1st argument you pass in is a numeric string is that really in its or is it a strange she error or from discourse that to a number quick show of hands who thinks we should we start about it an error a lot of people who thinks we should course it into a number and discontinue smaller number that's interesting I but that kind of demonstrate that on the treeless we just have a real that thing and what Andrea false has come up with that I think is very clever approach is that it will default to cost of which means of industry that into a number but you can put a declared statement at the top of the file so some per-file basis and say I declare ostrich friends equals true or something like that so that for the those calls the arts they are stripped I think this can be ni for as well so on application level or whatever you could say I want construct and this is at the coal cycle that's the term so so can be called from 1
context is strict road in a context of monster mode library offers can be really strict but still allow people causally everybody's happily in theory I will see how far that actually gets of Peter Morgan's after almost certainly going to go away it was so using Peter work instructors repeat 5 good OK those those should be dead you should is honor under constructs that against your support but if you're a 32 bit system you know this problem intimately because fast past about 4 . 2 billion you convert to float you start losing and significance values you not 64 bit system you're limited to 16 until you I begins what you have to Montrose size integer and it actually treated as an integer ever were moves around the system on this because this would create a home I need to modify some extensions of that but hopefully not too much is the idea Our made use of sequences mule just go with the ill back backslashes you see actually say I wanna so here Victor code easier to read so if I station operator Davies personal favorite on this is sort of similar to the Easter Stockholm function where return negative 1 at the left hand more positive 1 of this flower or 0 for equal and I have this backwards because I was from it so it's the less than equal greater than looks a log of flying saucer seen from the side of so as a possible of Encore fragility and some he's calling the serious of so what's actually happening on the inside the use of the term these parts that really interests me on the stuff that's happening internally is the stuff that I get excited about teach revise notion of a verbal or the sort of the internal representation of a variable as for units in it 1 to say I'm 4 and for that type use my value I neither a reference are referenced in reference every variable on page 3 5 is counted in some way even if it's a non non-reference variable this is our copy-on-write things on and prevents us from having to duplicate too many things like we cut a equal some string equals a you don't have to do it straight this 1st find it works great in fact it makes a very flexible runtime of but 1 of the problems you run into is that we switch with 32 64 bit system you have doubled your memory requirement pretty much possum or because you have to sort twice as much for every single variable at your past era this also top causes some problems in how we structure array containers the way impedes refinery works is you got a bucket which refers to a pointer which refers to the actual variable and then indexing that thing means indexing 80 a hash table which points and bucket wheel which points list of buckets which point pointers which 1 2 variables these are a lot of layers interaction and this caused a lot of actual execution time and memory requirements and that is making the so what we did I we that completely and we said they were compactify the structure a little bit of partially by making some of these variables explicitly wide instead just an int the other thing you want to do is reference is out of Isabel entirely were just there is a this value is of a particular type and if it is something that requires counting like strings arrays objects were willing to make the thing to point out the direct culture but for simple things like integers floats mucinous undefined they're just for a reference it directly and we can copy those as we make the values this allows us to get off readable holes layer of indirection which is more memory savings it also allows us to pack our raise really tightly if you have a numerically indexed array of C 5 elements yeah you cannot have a z doll by long strong right up to 2 0 2 fourths meex dereferencing really fast you hash lookups it makes storage very small all of these things lead to less memory consumption let's see if you use and faster results in less time patches of most investors colleges but a reminder we so that's about as deep as I'm going to get remarkable that so I hopefully this is not the by the 1 in the but but this is the most likely cause of backwards compatibility breaks you can rent to impeach the 7 is called uniform variable syntax speech we have uniform syntax right nervous laughter comes out of the audience yes PhD does not have consistent syntax because it grow organically was discretion image it just get things done but you why that would really inconsistent behavior in certain expressions things were usually dereferencing array is a higher order of precedence and then let's say on the resolving a variable variable unless it happens to be a class property that you're dereferencing in which case things a backwards on this is because none of us are really great language designers we just sort of get the job done and so what we're doing is we're sorry it's time to this time to watch that out is going to just say let's must declare breakage organized major version to that so would you got here is a few expressions that you might see code on hopefully not too which variable variables of to me variable properties things like that the pH refining versus the PHP 17 of these are detailed along the Our seepage page for this which is wikipage peanuts such artsy such uniformities variable is intact you can see that for yourself but and as you see if the meaning changes in your program for changes and things can act to break so hopefully some go work on a winter that can look for these sorts of things the warn you about them but it's certainly easy enough to detect do token get all run thrown CPC that all this is likely to be your only significant piece break on this because you headache and sleepless nights there are breaks I mentioned extensions of every extension going to test with a tiny bit because we are removing those layers of interactions we don't tend to be all that all stars were not just doing mystery that vowels are a loop the our array iteration has completely changed have to change of the good news is that the average symbol extension like a database collection you just work or only require a few really easy to follow a recipe steps to fix them the bad news is at last check xt but X in the above had at least 18 pages worth of errors on the 1st compilation of so Derek's going have a very fun time fixing that for PHP 7 of the most likely would be a whole new project the xt going centers like that but you can look at the whole list of things that have
been deprecated like a mention my sequel year edge or when or they still will be available in pickle so you can get happened so no big deal on appears in place with e-value permission of and using that anyway peerage place called that is your friend on create function definitely not your friend so we have closures for that sort of thing I the handful of deprecated functions new I reference going away and that such a kind of annoys me because that's not as benign as a I think a lot of people voted for that I think it is but this however but so was signed a talk a lot about PHP 7 how we got there and was changing and what's not changing we talk about half a little bit because I think the future PHP sevens when you include some pieces of hack we've already seen that happen actually unpack introduced a return type continued generators and things long before they got into the of 1 to argue the came from each of them or they came out independently at that idea is always a good idea of returned height and it's almost certainly were a result of encouragement encouragement and these the improvements in people 7 were almost certainly credit slightly from uh from EGG and because these they basically mere are types exactly of which is coincidental someone talk about a few those things no this book has this runtime college tree it is a drop-in replacement for PHP and apart from earning PHP code also run something we call that code is a horrible name it's harder Google I'm sorry I try to get a changed several times but had too much traction internally so cities I what languages that so what is that well it's type into got mad number 1 so about skillet i can solve a place which Peachtree sevens working on on return Titans which paid fees are gotten out of your proper is encounters contrived you can create your own new types and you can say I I wanted type that is the user that is a specifically formatted array of color shape because the syntactic sugar in there so the light I talk yesterday and with it from the the German said that arrays could be typed actually can so it's what effect that on the there is a static analysis tool the great thing about the static analysis tool and you can even use this near PHP code to a certain extent is that without having to run your code and make sure that it works right in all possible situations it's actually of trace the types all the way through your application and say hey this thing from this 1st entry point files a string but you're trying to use it 8 includes later as an integer that's going to fail you a story about that before he ever reach that point that's a really powerful attack the and so so that a really recognize local looks a lot like PHP which have few actually types in near construct which avoid obviously takes an integer you read and we have this area here there's a horrible choice several orders that it's is dollar an arrow ad now this is not an integer you promised in on it and it looks like a 1 but still not integer so hackers going to look at this in its way say through expected to add received a strength retain that was happening in you know what effects in you know that this is a problem is before you've ever run the code these are not runtime Caesar build time as the developed nations seeking the are concerned are infromation I mentioned passing this is take some of the of boilerplate under code you'll notice we're no longer declaring nom as a property explicitly were putting it on here constructor in giving visibility so when the constructor runs is would declare a private integer on class is automatically going to assign it argument to its value to get rid of that of the boilerplate the generics allow you to do some type erasure through a class definition if your from come from jobs you've probably seen this limited to a certain extent support us with simple this is a class whose type of its so property and the type this term again attacked the stick man is determined when you invoke so I say I what's new through 1 2 3 this automatically becomes an into specialized to by saying you through 3 4 1 4 it automatically from the vault specialist for ends up you don't have to rewrite the same thing for all of the various different had the right use spot collections of specialized arrays so the rate is a great container right it can be a vector it could be a map it can be a set it can be all the whatever you wanted to be we've that these defined as explicit object types in each of the objects have methods on them so you have instead of having to remember of was it was of a rain map that takes a call back and then map the filter is the the map and the core over the around here member of in his mind I can't remember at we've got uh methods on each of these objects you can just call them directly and that's really useful I would love to see some formalized collection objects like these in PHP because if there's 1 thing and fact really love using was not this this is number 2 our and there are some evil versions which are often something which want to pass around without getting change the of shapes I mentioned these are basically are useful for specific sets of keys and types so I said I how users who's got an integer insecurity a string name since your age anything that doesn't conform to that notion of a user should be in there so it might get user I'm trying to pass something that has an alias that's an in my i usage of atoms and access something called the neural that there again as your right your code and over time you refactor your code you think of handle all places were some restraint to the Getty Images neural it's fine say that act comes up and says no in the that's test that you know you're trying to get something that doesn't that you don't have to write your code you don't have to wait until its production to find the problem if think of things are really like also anything it is I got how we can describe as a single if the wrong PHP applications so you have the start you may be process input you to go to the database then you start creating some output and you send it to the browser right pretty typical program and have to block each 1 the stages is that I need to get the user profile information and I have to get the all page requesting or whatever the lectures are actions that a block on each other and that is what really slow the program down more so than the engine that's running Europe each because it's that blocking effective it really slows you down when a saved does and this is why I really wanna and page because I
think this will help more than P 2 7 is it says alright you can define these as individual chunks that can be called in parallel so I'm sure limited numbers the left hand side is judicial probe clothes the contained in this case for 140 ms that walk on each other right hand side using AC you're running in made up numbers to 125 ms they made up but they're not atypical like a 2 1 improvement just by paralyzing things they can paralyze is a really cool thing and so looking
back at the code this sort of like starts that event will said that a vector of things that I want to win but these all happen to be in our progress so we're making a UDP get time were making up the kernel get and pro post when the Chrome get send the Tatars and in its request is then a part of the proposal gonna senators request implies that we get times the mass and it's beauty peace packet and policy it is Kuwait free any 1 of those have activity they continue on this is a pretty us so the same bound the sort of like
the core features of hack 1 very high I care a lot about on let's say you've got a big PHP code base anyone turn it into hacker the tool for that Compaq cicada and all of that worthless longer loss so most of you give me a probation using gas but I guess my types figure out what things in the world looking at this we know these sites because this is a pretty straightforward they are static types we know what they are so we can get them pretty reliably but everything else maybe maybe not so much of it once right so 1st passes alright have most likely returns of on not but the syntax the question mark means it can be noble so it's no lawful and the act is year er suppression right it's a thing that says if something goes wrong don't complain too loudly the the we also say probably take students because all call-site see are passing it so we can make a guess about that and we continue to sort of stepping through that 1 at a time until they are with that we run this code in production for a week if there are errors it doesn't complain about them because about the the suppressions on the at at the end we feel the logs back skater that here can say yet everything looks good or maybe everything will but 1 thing looks good will take the that's off to make them hard times and it will let you know which ones didn't check out as well as the
the meter mountain of Facebook are in fact indicator at various points along a longer history to get more more things converted sort of timidly at 1st and with with more gas so what of the general so this graph is that these big discontinuity are the act here but the the slopes are people noticing that could who having been told about that yet so Haiti I like this is a good idea to make more stuff so there's been a lot of Iunch from people who actually writing the page because the rest of us I some of it is a lexeme PHP I'm non-study faults so the call the great function with no parameters the they is actually get this default from a function call you can do this nature training can do it in a cage signal syntax high love hacks when the syntactic it all excited about exploring this syntax look at some code here this is not unusual sort of uh code for a dealing with array of values that we want to filter map right we got a call back that says of for everybody in the user's lest we want to call database that's by user ID to get the actually uses data it won the being of solar array of arrays like this and freeze profile wanna say only included a name is set so this you we get values were not going to translate basic because right let's turn that into short lenders it's still the same color but instead of writing up the closure as function primary less this variable return that we reduce it to just the important part this is the function a takes any and returns result effects by UID from TV which is automatically captured from local scope and similarly for filter easier to read as a walk through code was used special and syntax were really shines as we mix with collections I was mentioning filtering not having their arguments in the opposite order which aggravates me snow and because how do you read this at a glance how you look at that and say yeah that's my input array and this results of that map operation which happens 1st and then the filter operation happen at well In fact parlance we have a vector which has its own method maps it's called which returns at a map that you can then filter which takes back the yeah I don't yet another reason why not things and 1st of all detected 2nd it's still irritates me there that there is a logical reason behind it but I'm not repeated because I am in of protest our the this Simpsons episodes were homeless is just because I don't care doesn't mean I don't understand user attributes of user experience are mostly sugar and if you use Java using these trees for the other the black line and in fact we just used evaluators and it can be a list of arbitrary strings those strings can have values and sigh them off here in this case S school in come physicists stupid because are there are detected by reflection not a huge thing think PHP could benefit from it would certainly help with things like mocking in unit tests and things like that you can say you know this instead of having all of Europe's each unit test the simply starting with word task it might be all methods that have been test actually on for more formalized we do our use these attributes for source more specific things I you probably have code out there that mn analyzes and values so for a given input and it'll say have I calculated this before it so we turned that if not calculated now and stored in indirect before that international common ways this makes it easier to write the code because your Frank boilerplate formal is like a static memoization this actually happens at compile time so there's only ever de calculated once for the entire like the process all this is specific to having static and of the on select any 5 of an empty string should always be the same value right the just had it once and final statement involves are there are different ways of dealing with with the air is happening during your request so if you've got a chain of method calls 1 of these might fail the the exceptions does return all of the who throws Exception you have this try catch around deal that if returns and you have to test each 1 as they come and say OK this regional or object as it is null continue on if this object mechanics call of says no safe static calls no safe method calls for I'll just add extra request more cheer operated say only call this if you actually have an instance exit feel of who's done this pattern before we've got that form that takes a dollar were getting the user-supplied data and just so straight on page the honest because I have done this to you and I will admit to it who has who has done this folklore come on come on there's there's the nervous has knowledge together when you 1st start paraffin when you make this mistake it's fetching easy 1 to make and what happens who was to say what happens here as they were for I'm actually even demonstrated how you would uh this release exploit you started stealing cookies people start are getting access to all of a user's data through a little CS injections whatever they have to do I was literally sitting in a hospital bed with and something like morphine into to me because I was always really adamant woke up at about 2 o'clock in the morning there's an exercise in Japanese search the other 1 3 at the time of on web search pull up my laptop and literally in about 5 seconds yet there's a long will be home I bring me that connection the middle 1 nite on drugs I'm not sure but I think any more drugs the making good color within sight so How can we avoid that well 1 of the things that uh facebook is going up with is a thing called X effects for PHP and not only does it existed you feel cost exist PHP about extension out there you can use slow right and appeared to be 5 and I'm pretty sure we have important for 7 yet I should probably on of this allows you to treat the occasional tags as 1st class citizens instead of just being a strain vs no quotes here dollar form equals of form tag and that has meaning to PHP inside the font tag we have something the strings as something that tags we get those onto a property of that tag it's not just another piece of string in a long series of strings it's a piece of data that's gone into the tag and the tag itself knows ah I am working with idea I would apply ational special cars or you're all encoder where the appropriate thing is to make it safe this is that it has 99 point 9 9 per cent of your existence of possibilities there is always a point 0 1 per cent because if you give anyone a gunman will inevitably should themselves in the foot so try to improve during the you can also create your own tags so you can actually use this as a way to seperate view and business logic concerns with better of this particular site here has a my site for the owner and that my site the can take a language to display the in and then the tag itself knows how to compose itself out of other tags works just use complete string of data this but is 1 0 1 places we can break things Jesus you variation is my favorite tags the thing that w 3 c in its in its infinite foolishness decided to take out of each amount of link tag and implementable with JavaScript job done um Sony exceeds the well we deliver all the xhtml 5 tags with the library is included thing about axis told but if you want to see more and there is actually the bootstrap mistakes Twitter's bootstrap library which is basically literacy assessment of a script and allows you to create your interface is really quickly and simply in your server side by Fourier mention of X is P times a lot of new elements and get help flesh Facebook flash exarch the bootstrap orientated himself x each in the struggle much hi and so on
that's right so let's say you wanna try pack a but you want keep your escape hatch open you wanna make sure that you can still go back to PHP because well maybe Facebook will abandon ancientry tree and the way we did detected profs are but that's I maybe uh at agents is not stable enough it's it's crashing all-time fire that as um maybe your point here boss just says no I want PHP so gimmick about Dehak here's a look at your heart code and it's a tall here are simply because that really get rid of those collections with offences syntax were a map these method called and who receive arrays were nigger rid of type in the don't make sense and were Amoco the repeats people 1 exception to that is that the sink will not be is not Dehak capable the act can fix k what the record of asynchronous gonna say there no equivalent person PHP and again on a really love to get anything in the future we can think some so what does that mean for the future page
because you can get here about 57 you didn't come to care about great the the it means that we have to 1 times working on page P and that's something that we haven't really had in the past 20 years PHP this will see just bettering PHP I say mostly because of another projects like failing during a few other things that have tried to sort of the the compiled version PTP you're a different version page p but they also sort have disappeared over time this sort of and co-development of the language means that both implementations the are so friendly racing against each other right there's a bit of light also is implemented something we should probably match that or peso is fast and thus we should publish speedup of P 3 7 1 but I'm not going to say for sure that it focused on performance because each even was on the scene and is very kind coincidental inconvenient if that is all a GGM does for PHP that it's done its job because we have something better for we all have something better for on the new syntax like is and also use of I 1 5 3 because some of the use in Texas so amazing on I tend to is is I don't have gotten Flowers for Algernon is the is the reference in 1 here will get but it feels like you just sort of going back into this this this dark place on the so I think the future pp works really become bright because we have this this this cooperation in this in this competitiveness so how does it and I think my times pretty close so how do people have questions that they were shy about their holding onto a promise I will make fun of anybody I will do my best to answer anything that the my so you know we on the part of 1 of the so that the cracks a question logically known to that of the divergence between of the peak the official page the runtime and definitional language and it is yams definition language for happen things like that arm and how close are we to try to keep together and and and continue to support things that there is 1 PHP language and not many people feel is of the short version of that is that's actually why we have to several languages on something that may not have shown quite clearly is opened had lesson
quest March HH this denoted as really a separate language so they going throw anything we want into hack and it's not going to hurt our ability to run PHP code because PHP it was question PHP repeatedly aren't so let's say as an example that I return type hands on let's say that the internals group had decided that instead of putting them on the right after a colon we want them some on the left like right after the function key words which was discussed so what we do in that case well we have they are key the parser to accept the return type 2 error and we either a lean that pass along some of some of their or we say alright we're deprecated that an added the support and move things around all this kind of case by case basis but the bottom line there is that having packed as a separate language of several features doesn't prohibit us from matching PHP and I personally because I have you and about dogs in both races like I want I want PHP to thrive and I want a GGM and hack to thrive as well because of the of the alternative they provide and the incentives they give to PHP so In my selfish interest I wanna keep it was close together on avoid those divergences however the interval there was a very or of you that is an excellent question because I should have said something in it and so the question was can you make Hakim PHP together in the same project are in the same request the answer is yes on so let's say that of let's see this was just a fine with a high method with all of its typing in here it's an act 5 2 we call that from feet absolutely more gets a page please of you were in Riga Peachtree flower calling say hi we do need an instance of the map object which you can still get to with new maps of this probably by examples the takes a collection but yeah I mean they they all exist in the same runtime thing process based on the specifics of how that went and operating as can be set on minor variables that are absolutely interoperable the trouble you run into when you're trying to run the static analyzer to check all your types and if you got an exact page because the peach because basically opaque it doesn't know what types is supposed to go in because nobody stolen so on you don't get the same benefits and of running mixed with the absolute Kendrick but I'm ends and we talked about this hacks
occasion process at Facebook or back we only converted 10 per cent of our files to hack here does that mean we have a completely separate type of only hacker 90 % CI that's ready to be now means they're calling into each other so it was all about gradual typing and gradual conversion we then the that thank you so and might has he was asking a question on the nation mentions specification would move for active so I'm yes last June on record the question is more of a suggestion questions a last you know we released a specification for the peaceful language in 20 years PC is never had a formal specification it's just sort of like well if random PHP than is valued PHP on which works great as long as you're on a single implementation of a language but then of course we have the you know the the evolutionary problems with that of having only 1 of the uh implementation like diversity and therefore like matter of so we are back to pay the guy who had worked on the C language specification to sit down and say figure out PHP you got it passes you can test code see if you can make sense of the come he went to an insane asylum but no but that actually went OK but he did so and have a lot of head-scratching moments from which usually came to me because I have the experience of the pitch period time service yeah yeah that's the yeah if you if you know the sorry the and there's a lot of a lot of discussions are only offers come out like that of especially with my but but I yes so we had this guy to write a specification for us on the road this she was massive MS Word document as bless heart once traded in MS Word on that we eventually released as uh Samarkand files because the soul of a more open and they now actually live in peace your repository get have become such PHP slash owner CPC dashlink spec and that has since been an evolving document reduction branch that repeated 7 the hope of and have been adding all of these things like you could little syntax were whatever else it happens to be or Richard so there is a formal document for that that's going to help keep each pH Aegean coast gather because we have 80 formal specification of formal set of conformance test to run was against on the eastern was written for PHP so AGG and does not pass all the tests that we wrote from his back because it's at this point at least our job to catch up to PHP nothing to these job to conform to the if you if you think about the the same the the so question about given that exit the is extensional for PHP does get upset if you don't do things I'll include tags and it is not its dual transitional it is xhtml so yes you have to close the tags on my hand example I think of an image tagger narrative did have the Fords large called Alligator Records on the yes the which I think is a good thing to be honest over uh 1 law the of so that what was state of a GM inflection this of as you the base because running ATM everywhere we have been since I'm watching roughly since thousand years ago actually and we're running pretty well wikimedia recently switched over so if you go to wikipedia . org you're running on each and that's then for a couple months now these sort of 2 to 1 improvement in terms of both response time Our Mexico's 3 1 improvements in terms of a CQ but there are some others which are not tree convenience because sort of they wanna put out their own announcements and say Hey look we're doing now and this is why your site the coming of on I would say there are at least 3 large sites that are should field right now and I do know that they're 0 I mention by dint of ideas a big search engine in China and they actually so this this Wikipedia Wikipedia came to us and said hey can you help us with this migration will probably on problems because a lot of knowledge of people using yes so we dedicated engineer that meanwhile ideas too so I can wank as by way reasoning so I there's 2 big was free there and I know there's a bunch really small ones as well but because they like you takin stuff I what we have agreed to him I guess there's a high anyway so there is a out there is 1 public framework the active public frameworks there was called taking out which is entirely have driven and a 1 is called pocket rents on I don't know much about them to be completely honest but I know that they're out there in the use by at least a project offers and I know that Wikipedia is not using the hat yet but I believe they're planning to on that's true of by you as well on here what in it