 So you've been talking for a long time and I think that you've been waiting a long time to hear that. We hear better. We hear but not at the level of a voice in the room. Okay, well I'll put my face right into the microphone. I'll put up my nose. Hopefully now you can see a vague outline of what I'm going to talk about. It starts just by giving you a quick introduction to this small talk which may be something you can see through, something you will find interesting. And then I'll get on to what this talk is actually about, which is the Dramatic Small Talk implementation that you have in your life. So I can have a quick slide. This small talk family dates back to around 1967 against Amy Hocklock, Amy, correct me on this for the first initial thought on a subject. The final that I even understand that was really worked out in 1980s is the backwards that made us all produce that little bird that we're living here with. Because it's a language that was inspired by the creation of the Dramatic Small Talk. But there was a lot of other larger sectors that itself was a version of the small talk that kept the same sort of syntax to the written classes. Very simple. It was mixed in the behaviour of the language, everything else that we added as part of the language. And so, that's one very popular deceptive, which is JavaScript. JavaScript, there it's mostly in the signage of the cell, but it adds, which you can come up with a line of very simple terms on top of that. If you really, really want to communicate to a language that's never quite implemented in JavaScript, some of the names of the presentation make you stretch your head onto what they were spoken to the next slide. In small talk, there are basically two main bits of syntax. There's a segment, something to brag about. My guess is we're all here with a section. So, the only difference is that there are square brackets. Square brackets are not given to see in there. To distinguish between see, like, syntax, and stuff like that. So, while it's all about three messages, we can adjust the message name between the arguments. Messages with more parameters. Messages with multiple parameters, which have a missing selector in between each of the words. And I guess no one's confused or surprised by this. So, if we can move on to the next slide. The flow control. Sorry, did someone speak? Yeah, just that we were on the flow control slide. So, if you want to have something that looks like an interesting statement, then you just have the Boolean object through message. So, there's an example here on the slide, which is a box message. The bits and square brackets there are block expressions. So, these are just regular intervals that you get. They're given to see. They're just parts and they respond to a value message by sending a value message to them. So then, if you want to be as expressive, it works from the opposite end. So, Objective-C, I guess, is a language that most people in this room are familiar with. I just have a show of hands. Is there anyone who wants to know where we're going? Objective-C is basically the faster dog's brain has seen the small talk. It's what you try if you squish C and small talk together into a single language. Programmers to learn, which is basically half the dozen syntactic extensions. And it's really easy for small talk programmers to learn. Because basically, you're just going to be ceasing to have a scaffold over their small talk, which is which can't be replaced by the user. Adjusting that is the best of setting. C is a method of blasting small talk. Small talk. They're really cheap machines that are available in the 80s. I guess now that's that sort of problem. That's probably calculated as a faster machine, but with the high-end warp stations when it's small talk. But it's still advantage if you've got something that's process-created instead of Objective-C. That's this faster. It is possible to write a code object to see if it's possible that it's faster than a person's code. It's also possible to write a really subtle code object to see if you're using a sense of value. Again, writing a code object is small talk. So one of the examples I have to add is how to place them. You can have an object sentence. And I have a limitation in small talk, which uses a sense of value. They don't have a limitation. Objective-C, which uses naive branching, recursively calculating each subtree version. And by the time you get to about the 20th of an object number, the small talk version has started to hit a lot of parts in different ways. It's a really simple thing, which you don't have any of that stuff that you can see to expression as long as the API design was sensible. Insert object and write it there. You have to try and look up the documentation to look how much of the parameters go and what the design was actually doing. It's really easy to bridge the two, because they both have this selector within it. We first included this as part of the 12.1.4 release at the end of last year. Edge has started working to target the object of the API. The current version has now stood in front of that code. It started working with co-generators used for the commutative. It has a few advantages. Hell, the M-person can manage the optimization of the code. And it adds it adjusted. So the same parameters won't do much. It's going to rise to the full runtime by next few slides. This handle will be saved the next couple of months. There's also a command line tool, ETLC, which is what they dynamic language from Ireland, which is a story from Ireland. You can use this to run shell sprinkles. It supports loading bundles, so you can put it in a double tap bundle. It does a little bit of hacking, purely in support of the ETLC installed on the typing machine. The aim for this was to try and keep assuming that what you see will be kept in sync. This slide should be showing you exactly how big this is. If you expect it to start, you might know exactly what this will talk about in the past object operations. The bottom box says it has a new value message and translation. Like Edge can do every single type that's happened. There's the block as an object, which someone might want to retain. And I can't understand. So what happens if you pass a block, the receiver says OK, and the store has an instance variable that you've just read from a random stack application that's now on container object. So that's kind of a whenever you send a retained message to the block object. On the last slide, the block itself is a statement of the object or it does its type of point. So the mice are swizzling there. So the stack block context, which is the class of the content in the case of the stack, is a simple block object stored somewhere. And when this note returns, the block context is promoted onto the heap and it don't keep working. So the block variable is being accessed on the stack. They're local. They're very fast. And when you move them off the stack, then they slow down. They don't mean that when you send a retained message to the block. So still what happens is like this. You have some guards and doors. You have a condition which you shouldn't be true. This will be just like an object if you say if some condition returns true. And that's kind of an object if you say but it's all of those statements or set of context. But it's all over this return through statement. That's simple by the way. It's return. That through statement should return better than it's not just a block. So the way we can do that is to have a new exception handling personality function which is part of the package that runs new, zero cost exception handling APIs that are appearing in most units and access them to their own pretty well supported. We associate the personality function with every stack frame. This is just stored in the debugging metadata that's not an exception point to unwind this stack for this frame and if this exception unit be handled by this frame so all this new function does we just define a new type of exception and it's only understood by sport or code. Objects of CXM use export or style exception handling where we set it to and it's a little block in document so the project doesn't make an exception and it's set to block. The upside is that it's only stored when you're using it and most codes tend to use this method the same sort of using settings for using the block causes other things to darken in a little bit. So that's probably just enough and that is what we do with the Twilight High Agreeds for the store today it's a message to do is an objective since we're just defining new set of methods on existing parts of those new methods replace existing methods right that's useful for the Objective C programs but because this pilot is the same limit on its objectives it's the same thing as the Objective C so we define categories of objectives of the object so I set it a couple of slides of objectives of the object but really this is not much of a school but most of it is American it's not much of a pilot and the new versions of the two things enable cross-activation I think they also now they can push up also and as soon as the application goes into existing applications they can replace it they can put it into one of the next languages they're all here in the course in some way we think the free software is a free software foundation to find a language in one of the next applications which is integrated in that language and that's even if you use the schools of the environment in sweet software like this in class programs that you saw the screening of is driven by run time inspection so this will when you're ready for class you can go to any and if the source or source code is available display it in few weeks ago with abstract syntax to be transformed like this now so if you define it if you add methods or if you add methods to a system class it just turns your class into a category if you're an instance variable to an existing class then you still want to be able to do that so what it does is add is it takes all references to those and it turns them into the ABC course so instead of looking up at everything instead of looking up the instance variable directly it looks to come by a key variable instead of setting it by a key variable to an existing object it's obviously right so that's kind of pretty much all there are a few things we can add in the future script dimension or front-end like I said small talk front-end is less than 1,000 and it's by just writing parts of something to be transformed so I committed one last week which will guarantee a new true message on this I wrote the initial code generator which I really worked on this script as it's written it's about writing the ID and it's written in the first two applications we were thinking is maybe we prepare a replacement talk for tomorrow and maybe merge this one a short version of this one with the status talk I just got a question what happens with the dynamic quality of small talk if you compile it is it still there or will it get frozen somehow I want to know if small talk gets if you compile it if it gets if it's used at the dynamic quality if you compile small talk what is the impact of the dynamic aspects of the language none ok I don't know if you have small talk questions I can answer them locally that's a problem then maybe I will I will prepare a version of this talk for tomorrow and try to be able to answer more questions about it ok with that