Hot-Reload C++ on iOS - Sane C++ Libraries [ep.24]

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] doctory toos welcome back to a new video about C C++ libraries that is a set of C++ platform obstruction libraries for Mac OS windows and Linux that focuses on Fast compile times being blood-free simple and readable and easy to integrate with no use of the C++ standard Library exceptions and not part dependencies we can see there is a list of libraries each one with a different set of status like draft MVP and new ible and you can get in touch by looking at the links here with the Discord on X or Twitter if you prefer and maon so that being said let's try to uh see and describe what we are going to do today what I'm going to do today is trying to Port our SC example application which we can see it's a very simple uh application uh maybe not very simple but I would say uh it's a nice application that can uh use few libraries from the you know this project specifically like the SC plugin and file system Watcher and you can you know uh create plugins that are um hot reloaded so for example I've created this plugins and now I can say plugin one and I can change the code in plugin one and say change change me and this you know we'll get hot loaded so this is actual codee that will be compiled again into this plugin and will be reloaded by the system so I would like to run this on um iPad uh but clearly we you know normally we wouldn't be able to make any anything like this work on an iPad but there is you know what we are going to do today because the iPad that I have here is an old iPad that I have been U jailbreaking since a long time and you see it's literally broken I mean I want to show this it's literally wow this camera is terrible should I do it like that yes probably yes um so let's see if we can make it so that the application runs on iOS first thing first I think we need to be able to run this on an actual iOS simulator I have done already a little bit of homework so yeah let me cancel my changes to the plug-in um so the there is already some work that I have done to support iOS more specifically generating projects that can compile to iOS onx code and even in the make file back end and also generating uh basically a small Story Board which is one of the resource files that excode creates for iOS applications and I even added the support for icons which by the way it's also useful for regular Mac OS applications um and I have been able to compile a simple um Objective C application so that you know that is some tasks that I have done previously offline to make sure that I can actually compile an iOS uh app what I have not been doing is I'm making sure that um SC example is is actually compiling so let's let's see what happens we can try to compile it and and we see yes I have already seen this because clearly um yeah the file system Watcher will not work correct because there is no FS event stream ref so I have been searching this I think yes and this is is um problem because on Mech OS the core services do not um include the actual FS event let me try to regenerate projects by the way I want to make sure I'm actually up to date with all of the iOS changes that I have been doing let's see oh this has been overwriting my signing okay um yeah yeah that's that's the error that we have so one thing that I as I have done something like this in the past because I already have been compiling FS events on iOS in the past the right thing to do here would be reimplementing the file system Watcher using some other apis that are available on iOS to watch for file changes but for now we are going to do something really terrible I mean and by really terrible I mean really terrible which is um copy pasting the fs events had for Mech from Mach OS why because the fs events is actually does exist on iOS but it's a private framework yeah that's the fs events and so we will just be you know using it so let's say we going to file system Watcher Doh and I will create internal new file FS events and I'm going to copy paste this well I guess I can remove all of these comments because we just need the Declarations basically let's see if um we can include if Target OS iPhone that's something like that yes if Target o iPhone we will include internal FS events so we are Mac let's try again on iOS too many errors um isn't it including this oh I have not saved the fs events file let's try again yeah now we can see it we still have error oh because we need to include this in yeah here that's where it's needed F not found why uh oh because we are already in the internal so I should do just like this okay that's that's better so we got three of of the fs events linking errors this is problematic because you you know by using this API you will probably have hard time getting the application approved on the App Store but here we don't care we are running on a you know jailbroken jailbroken iPad so we don't really care so also here we have the famous Soo wakeup function so these are two functions if you have seen the previous videos these are the function that is um pausing the application uh flow basically the rendering cycle and this is the function that is waking It Up When It's called from an external thread like from the iio subsystem like SCA sync when there is a timer or there is a some messages on sockets and things like that so we can say if a Target OS iPhone else we'll do something else because this is um Coco API which is not available here then we get another error which is co co is not available when building for iOS which we can probably change because I added capability to do that yeah when linking we have now in s build build system there is a way to specify if um some Library should be compiled on all platforms or just iOS or Mech OS so I suspect I need to open the SC build file and when we have the Coca yeah I should make the cocoa Library just on Ma there is a platform Apple Apple not any but just macro so we regenerate the projects let's see yes we got it build fielded what else signing oh of course signing is reset every time okay that's that's right what else it's failing they still failed for unknown reason what does this mean what does this mean compile compile asset catalog uh that's the icon set I don't know let's clean the build folder and let's try again clean and rebuild this still failed and what if I compile it for uh an actual iOS device oh that works so it's just any iOS device doesn't work okay I will figure out maybe some other day why this doesn't work it's probably missing some images yeah it's not able to create some of the icons so my code to create the icon which is creating and synthesizing this assets yeah there are some warnings um yeah let's do it some other day so I'm building for iPad no this is failing also this one why build failed build succeeded oh it succeeded but you know it still doesn't clean the error Q fantastic excode good job okay this is compiling so I suspect I can run this on an actual iOS simulator right let's run it on a simulator here we have our simulator boing up beautiful Apple [Music] logo and yeah maybe we should be detaching uh well let's see let's wait please that's already very good result I mean I I knew that you know most of the code was already uh multiplatform but this is clearly uh very good I I think this will not be working so yes oh this is completely Frozen now let's try to look oh I disconnected so yeah running running paused what if I pause now let's see the co stack we are in the event Loop wait okay so the wake up is not waking up because it's unimplemented correct so we just wait forever first time we need to wake up because we need to implement the wake up and we need to implement and also the Sleep properly how can we do that where where am I here so this CF run Loop running mode is it even executing [Music] somehow okay let me execute oh it just goes so it's not stopping at all i h i I think I know why because in one of the previous iteration of my sole sleep for Mech OS I already had similar problem and the problem was that the soal library it's not problem of that library but it's using this um higher level I think it's called mtk view or something like that for metal because I'm using the metal back end and that that part does have its automatic timer that is waking up the the event Loop by itself to redraw at a specific um refresh rate that I suspect is somehow synced with the vsync and things like that so to get you know perfect smooth scrolling and and you know this fancy Mac OS apple style uh fluid animations so I think that here we need to do something that is similar to what I did back then but let's differentiate it just [Music] for um yeah for iPhone yeah this should be like yes um so the first thing that I would do is taking [Music] the s I think we have access to that because I was using it do iOS yes Dot View yes we have a paused because we need to pause the draw Loop let's do it yeah let's try again so we should not be arriving here instead we are beautiful I mean it's not beautiful but um okay so this is a this function runs one iteration of the event Loop I'm wondering if I just go like this will it be stopping let's see oh it's not even stopping this is really weird what if I could continue to run yeah it's pausing and now it's deadlock right pause we have one thread on oh it's actually stopping there it's stopping after one two three four four five 6 78 H so it's it's not stopping immediately it's stopping after some iterations it's it looks like there [Music] are it looks like there are some pending messages in the queue this is just running and you know pulling one one event out of the UI event Loop queue that iOS is running um the only reason that I think or I suspect this may be happening is because there is a tra of events that are already have already been pushed by the The View here this um iOS view which is MDK view [Music] um yeah it's not even oh I'm sending things to print hold on wait a minute I don't want to print code that's terrible okay um let's see what if I just make it like six times or seven times yeah maybe one less so now it's paused but I'm still deadlock here because the loop thread yeah the loop thread um well this will not work unless I also implement the wake up because otherwise this will Deadlock so there was in the previous iteration of the Mach OS implementation for sleep and wake up I was using exactly this pattern and that's why I know it and there was another function that was supposed to be stopping yes there's look result stopped and there is a stop function CF CF run Loop stop oh okay I can CF run Lo run Loop stop what does it take as parameter let's see uh CF run Loop ref how do I get a CF front Loop ra I don't know CF get Loop Loop run Loop um H Loop wake up actually also the wake up maybe can be used [Music] um where do I get the loop R get current get main I don't remember the difference between get current and get me CF run Loop get current return the main CF so I don't want the current I want the main the one on the main Trad yeah not the current so I want the main okay see have Lear run Loop stuff uh run Loop get [Music] current you know what I can do I think this one Returns the result yes the CF ront Loop result that has the reason why this is returning which it has this run Loop stopped which I suspect is exactly what we're looking for the Run Loop was stopped with CF run Loop stop yes now I remember this one correct so we can do for in I don't know for six times let's do this and if is run Loop stop we break does it look right yeah was it six how many one 2 three four five six yes let's try to run now run it running running pause running paused beautiful no it's still it's not not working right what is that looking now so we are in sule sleep so we are in CF run loop on one side and here um it doesn't look to be working what am I doing wrong should I run in default mode so this is waking up when I move the mouse which is sending events okay not when the timeout occurs am I have hitting this one um oh I use the get current I'm terrible get main right I want to stop the main Loop not the current Loop because in this CF Loop mechanism on iOS there is a loop on every thread and we want to stop the one on the main thread not just an arbitrary one so now I should be hitting this break point every two seconds okay yeah this looks great so I am unblocking the event Loop when there is Aio events which means like when I'm moving the mouse and I'm you know using the touch but if I and then I get every two seconds the I sub system with the time timer that is yeah making this wake up by itself so if I make this 20 seconds now it should be pausing and yeah it will stay like this for 20 seconds unless I start moving the the mouse let's see if in 20 seconds this is waking up it should maybe I should have been using a shorter um timeout yes it's waking up perfect okay I don't know why I need this magic six constant but I I will investigate why that's the case or if anybody knows let let me know but yeah I suspect this is just the pause event that is pushing some more um you know messages into the uiq so let's see if if one thing that I would like to double check because I've been adding all of the right Flags already for doing this which are all of this deployment info actually I'm generating them from SC build let me let me detach I should be able to yes put this side by side correct so even if I rotate it oh this is crashing uh let's say I'm putting this side by side um well that's not great oh so it's not resizing the buffer okay well this is not something that I but it's not crashing yeah this is not something that I handle so let's see if there is like a simple place I don't want the quick help where this is fixable and we may be sending an MR to the soal library for that I think there was a re sides iOS right sides uh update yeah let's see what is doing is taking the screen wack making yeah checking the frame buffer WID with the DPI scale and this is where it's changing the window width and height so maybe this is not getting C in the right oh it's getting called at every frame actually why is this not working right let's see let's debug this so I have so I have this function and it's returning a screen R of 1,80 of width okay let's run it now let me split the window and let's see is this the h no it's the same why is it the same oh this is UI screen main screen um okay well I guess we can say iOS is It's s a PP iOS dot is window or view does it have a [Music] window or a view field yes we need the width of the window definitely I don't think the you has a bounce for the few things that I remember from IOS programming okay let's try this one let me remove the Breck Point um uh there are some signals here yeah I don't know why this is sending this weird signals but the change does seem to work so yeah it resizes correctly beautiful um okay I guess it's time well this the sync registry doesn't well does work yes but it will not be able to compile anything because in the simulator there is no compiler because this is a legit um iOS environment so now that's when we are going to put uh this to work into our iPad we should probably commit what I did so far to transmit it into the iPad so I'm going to commit it let's say I [Music] am yeah maybe just a work in progress [Music] iOS work in progress iOS whatever yeah working progress iOS will work let me push it and now I'm going to sync it on the iPad let me connect it I have an actual Cable cable connected now I have already set up some SSH tunnels to it so I can connect into the iPad like this so I'm like connected to the iPad just like if it was a Mac window I like to stop my zsh so here we are in the iPad see we have the applications actually I can even show you like if I add the folder I have this SSH file system it's showing all of the files on on the iPad I have set up already this uh there's a locally sync synced folder where I'm syncing the repository files and then there is this repositories SC where I have my C++ libraries check check it out copy so I'm doing repositories SC um let me fetch okay let me pull yes there are all of the changes we have done so far that being said is this event compiling so SC do sh compile uh now maybe let's do a configure well let me remove yeah let me remove the build build directory so we do it from scratch and we see if this is is working properly SC build compile yes error okay I know what this is because I have done some tests and this problem is the following I have this folder with tests that I have used so let me tell you how I figured out how to do this I have been downloading this Theos Theos I don't know how to pronounce build system which is a build system buil um make files that has local SDK for iPhone OS and so they work also for iPad OS I don't know if the version of iOS I'm using here it's even iPad OS probably yes and it does have so all of the include files but you need to specify this as a CIS root how have I been able to figure it out I compiled a test application this is a sample test application which we can compile I can show you and I have been extracting all of the commands that are required putting them into an actual sh file so that I figured out the steps that I need to do to compile an application on device and one of the things I need to do is to specify the s root so it's Isis root yeah vmobile TOS this one um shall I show how to yeah let's try the the test application first so I'm going to do test test app application so this is um toos yeah you need to set an environment variable where Theos is installed and then just call make yeah this is making oh I already compiled it well I can clean it just to show it C test application copying resources compiling compiling and signing that's that's also the important bit we need to be signing the application um now I can and to install it as a root application I need root access which I can do here by creating another window and say super user this is the default [Music] password Z SH and then I can copy um tests test application Theos obj debug test application into applications yeah applications yeah now I need to do like a u well let let me share the screen first I think I can do it with quick time uh new movie recording okay so that's the video from my iPad which you can see also here yeah now oh I probably moved the cable let me try again quick time player new movie recording no I don't want my face two times [Music] um let's try again new movie recording okay that's the window I would like to see see so can I keep it like always on top is there a way um no probably not well let's try to do like this so UI cache okay we have the test application so if I try to open the test application we have the test application so this is the application we just compiled perfect so let's now try to compile the tests and run the tests so I need to go in repositories SC scsh compile SC test no it's build compile sorry build is the tool compile is the action and S test is the target oh yes we said we have this air I I have been adding support for environment variables which you can see it from build dot well it's it's in the make file actually if you see the make file for it the make file for SC build I can probably add yeah folder that is centered around SC build yes so let's try to see intermediate um BX make file I have been adding yes support for CPP flag and cxx flag and LD flag yes okay so I should probably export LD Flags to be minus what is that Isis rout let's copy it I'm losing myself but I'm confident I can make this Isis root Isis root this one which is the includes this root let me paste it LD Flags um I I think I did this in the past maybe I have it in the history oh I need yeah I need the quotes here well but I have it in the history here yeah LD Flags C flags cxx flags let's use them now let me try again to compile compile as C test operation not permitted why uh um H is it does it have actual permissions to do so sh um why is it not per that's actually weird maybe I'm in the root profile let's try again regular profile zsh SC build compile why say that this is not permitted what am I doing wrong I just did that not a get repository um this got damaged somehow does it have the dotg directory probably no okay so I guess I need to clone it again get clone bar mobile uh sync SC cannot copy operation not permitted um let's do like this this is cloning yeah because there are Sim links in the middle move a c into repositories okay okay now what if I scsh configure build configure of course we need the export Clause with the Isis rout let's try again we are getting closer unknown type file system okay this is our friend oh because we are on the main branch so um get check out development and let's try again can we make it yes yeah it's even cloning SOC Library beautiful and it's cloning I'm good even more beautiful and yeah if it arrived until here yes we should have our projects generated on device so let's try to look for them now we have build so this is on device this is on the iPad and we have project we have the make file for Apple this is really good so let's say SC build um compile SC test this is compiling the tests and it works and what if we [Music] run run um why is it why is it recompiling first I don't know why oh that's terrible sometimes the zsh gets confused so I need to close it down and reopen it again let's try again build run as C test of course now we have been losing our LD Flags so we try again I suspect What's Happening Here is that some processes get terminated because they go out of memory on the device so that's why sometimes it just goes you know Wild cannot execute binary file um okay maybe this compiled application does not have the right permissions to start that file but we can try to run it ourself let's say build outputs iOS SC test so this is all running on device on the iPad and it looks like it's working let's see well most of the code was already compiling on iOS because I tested it you know in the simulator as you have seen uh yes so all of the test Suite runs on iOS which is pretty nice it's pretty nice I wonder how the plugin system has been able to work oh because it gets the yeah the Isis rout from LD Flags yes because plugin uses uh yeah the LD flags and the C Flags correct that makes sense okay what about SC example can we even well we cannot run it can we compile it let's compile it compiling I'm GUI takes most of the time here it's a lot of code it's a big Library I mean big in a good sense not in a bad sense but does have a lot of stuff um okay we have some unresolved variables I think we need to be linking like UI kit really the you know the famous basic libraries on iOS so this is our local SC copy but we want to look on the one on the iPad so let's sometimes I need to wake up the iPad because if it goes to sleep for way too long it will terminate the connection so SC exam Le where is yeah let's go and take the build file in the support no where is it in the tools SC build let's say I'm adding uiit on iio iOS so I need SC configure because this needs to regenerate the mix file and I can try compiling XY example one more time compiling am GUI de am GUI actually but they didn't rename the files so I will still keep you know calling it I'm going okay we have less linking errors n a string from class this is like the equivalent equivalent cocoa library in under iOS is like the foundation Library let's try to do this configure and compile cycle again compile let's see will it work will it at least will will it at least compile hopefully it will yes beautiful so now we have the SEC example executable compiled let's see build output iOS SC example yeah we have the SC example file but now I need to generate an actual app right how can I do that my idea is that I can take the bundle as generated here for any iOS device uh where I have this this still failed for no reason can I use this but this will work only on simulator right I probably don't care because I will be overwriting the ex executable [Music] anyway um because I just want like the up bundle because I I don't have support to create the up bundle inside yeah let's take this one I don't have support to create the up bundle inside the with the make file it only creates it using xcode so I'll take this one maybe this one and compress it I probably can just copy it right let's copy it copy where into not repositories maybe let me cop it into the tests yeah tests let's copy it copying beautiful now I can copy but I need to do this as a root user on the iPad so let's open a new SSH terminal we do a super user all fine yeah that's the default password it's not my password it's like the default SSH password when you jailbreak an iPad so now I'm I'm root and I can copy recursive I'm inan mobile folder so I I can say tests scx sample do app in two applications that's good so let's try to see what's going on here if I now do a UI cache will it show up it doesn't do we have the SC example [Music] yeah maybe because it doesn't like the this executable right why is it not well let me try to overwrite oh we still need one more step which is the the signing and we need to take the signing here code sign allocate yes this one with the path so let me make a small batch file sorry batch shell file somewhere maybe even in the repositories let's say new file I don't know run. sh we will be Cod signing this maybe copying the yeah let's try to go into the repositories SC so we have build maybe I can just copy the path build outputs this one copy path um so copy this one but I'm in the folder so I can just say build outputs iOS s example into appliations s example. app then I can code sign allocate this one example um you know what let me make it also compile so I don't need to type to comments uh SC build compile example okay let's make it runnable so this is compiling L did failed all right [Music] because uh where wait wait a minute oh here I am in [Music] the in the root environment which is not good so it's ch own mobile stuff minus r current directory before I've been breaking something and I would do the same also for application SE example now if we go here and we run LED is a certain thing oh because because this pad is wrong let's try again okay maybe let's add a UI cache also will it show up somewhere run this is not showing up why is it not showing up maybe it doesn't like that s example app shall I use this [Music] one so this is the the one coming from oh let me delete all of them so it will regenerate it will generate them from scratch so build they still failed for unnown reason but it did generate the app right so it's not generating the icon okay I see what's the problem can I just remove the icons for now and fix it later will it work yes okay okay yeah I suspect that's the reason I will need to figure out why the icon doesn't work but we don't care for now so let me remove RM RF where was it VAR mobile test SC example app and we copy it again yeah this one is doesn't exist [Music] anymore let's cop it again s see example tests copy but on yes on root CP test s example app well it doesn't work from here we need to do bar mobile test into application and let's do a CH mod for the staff now let's try to run this and let's see if this will yes it appears yay shall we run it shall I run it will it work no why um I don't know I have seen some applications um yeah crashing because of entitlement problems so do we have an entitlement problem here because I have been needing to change the entitlement for applications to have enough rights to run but this looks correct to me yeah this entitlement looks good so I'm copying s example is it actually overwriting the right file see example let me try to run it again is it working [Music] now it works oh this this is this is really good so we actually compiled the appon device and now it works so I don't even know how I did it because I did so many things I definitely had you know I had so many tests running where I figured out many many other problems you are not really seeing here like all of these entitlement problems where you know I just spend many hours trying to figure them out so this is just tiny tip of the iceberg of of the complexity but I'm happy that this works so let's see the sync registry does it work let me try to do that so you see this is running on device sync registry okay let's say will it load it doesn't work so it's actually erroring out and I you know I suspect that I know why because we don't have the only reason why this is not working but the test is running it's just because into this environment the basically when running the app the environment variables are not brought over from my shell SSH which is you know makes sense because it's a different session so I think for now I will just hardcode it and maybe figure out some some way to I don't know add like a text box here where you can set the location of the ceas rout but for now I'm just going to hardcode it let's hard code it so we need to do it in the link phase and in the compile phase so we have compile file CIS root so if well I I'll just have to go it for now so CIS root where is it arguments Arena maybe let's add it at the end arguments arena. append um multiple strings um so we have um Isis root and the path of the CIS root where is it where can we cop it can I just take it from the history here yes let's try it let's try to C it here and and I need to have the [Music] same also on the link append this single string here here it's called Arena I think I'm missing a slash so you you know what to test this out I will create new SSH sessions where I don't have that environment variables and if it's correct that should be working even in the test so let me build compile C test let's try to see oh but I need when compiling the tests correct so yes I need this anyway I don't need them when when running the test so what I will do is I will compile it and then create a new Shell New Shell where this is not set and I should be able to run let's see if this actually compiled everything yes linking beautiful so build SC test let's try it plugin fails Library not find found else system oh okay why is that compile file link shall I make it uh let's put it on top wait just to make sure this is correct so let's compile it nothing to be done why um oh I'm changing the file in my local copy not on the iPad that's that's bad let me remove this well I guess I should have been do it doing it earlier but yeah let me do it here so we doing the link append single string pend is multiple strings and then I'm doing it in the compile file where I'm adding the arguments Arena yeah this should be good let's recompile it yes now it's recompiling it it's even recompiling the bootstrap and let me try to run it again okay this is now running beautiful because we hardcoded the location of the C root so this this will need to come probably from a parameter but I don't want to waste time adding it now um let's try to recompile the application and let's see so build compile well we have the batch file run the sorry the shell file let's see okay when we do UI cache that is clearly terminating the app let's start it okay sync registry load it works it just works yeah we can load the plugins these plugins are being compiled on the device on on the iPad using the cang that I have been installing with the jailbreak and the croot that I'm hardcoding and that I will need to expose it somehow here as a parameter so let's try to do something fancy oh I want to show this is also running on the iPad just the same that you see over there um now let's try to do the hot reload so the hot reloaded files are here as the example plugins so I will make it smaller so we can see plugin one I wonder how much time will the plugin take to recompile so I'm doing plug-in two one two press yeah takes like 1.5 seconds or even less that's that's actually really cool but now I need the the final test I want to actually do this on device not connected through the SSH so let me try to open a program that should be able to do that I have this goo edit okay where I have tried already opening this files because I wanted to test so you see it's synchronized with what we see here and let me place the SC example app now that's the test application let's put the SC test application oh we have the resides issue let's take care of the resides issue for now by hardcoding that fix that we did yeah that fix was not being ported over because that's in a third party dependency that is just cloned as is which is the you know the so Library um there was a UI screen main screen bonds and we replaced that with I was like um soal app was it ios. window. bounds it's a simple fix but you know so let me try to close this let's recompile it yes it's recompiled so related files it's linking now we should be able to execute them again so let me start the goo edit and let me start a see example oh why is it crashing interesting yeah it just crashes sometimes well I guess there's something else to fix but for now we will we just want to get this demo going because that's that's what I wanted to get so as the example so I'm modifying the text directly on the iPad so you see it's you know I'm literally moving well I don't know how much you can see but it's here yeah so let me try to bring up the keyboard enable the keyboard and let me make it such that yeah let's sync the registry and let me make it I don't know 10 times this should trigger the hot reload by itself when I save it I save it by touching this green line yes it works so you see we are hot reloading on the iPad plugin two let's say Dash it works it works it works does it work I don't know can I can I show I'm I'm really terrible with this camera it works and now let's save it it works I suspect this concludes the video because I actually achieved what I wanted to achieve so this is really cool we can do C++ hot reloaded development on the iPad which I suspect is totally uh useless but it's so cool to do that I wanted to do it and to show it because I did this in the past but you know now I'm doing it again for sharing it with everyone and showing it how I did this stuff there are definitely some details that I'm not showing here but you know if you're interested in really replicating what I'm doing um please check out the Discord and get in touch with me and I can help you if you're really curious another thing that I would like to say is that this is just a very old iPad that's like the first iPad Pro so it's it's from 2017 I think um and the hot reload that the lumber it's so fast to compile that it hot reloads into like less than a second I don't even want to imagine how fast that would be on an M4 iPad uh which I do actually own I own one M4 iPad the newest one but I just don't feel like it's a good moment to jel break it I don't even know if it's possible ble to do it probably not because the latest um versions of the Usos and the CPU are not um you know able to get the jailbreak but so this is um this is pretty pretty happy and happy handing for me with this entire you know jailbreak history that I have been and you know scene that I have been following for some time I hope you enjoyed the video please uh write some comments if you if you're interested and check out the project as a s C++ Library project on GitHub and what can I say see you next time bye
Info
Channel: Stefano Cristiano
Views: 108
Rating: undefined out of 5
Keywords:
Id: 6DfykfYCQdY
Channel Id: undefined
Length: 75min 36sec (4536 seconds)
Published: Fri Jul 05 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.