#development

1 messages Ā· Page 247 of 1

cloud yacht
magic hazel
#

rather than leave, just mute the server

#

also idk why

#

but it is so satisfying

#

to just

#

throw this little dude

#

around

rocky oriole
#

leaving is a better approach for trying to get away from the server rather then muting

manic forum
# magic hazel

you can import more by dragging and dropping a zip file on the page

magic hazel
manic forum
magic hazel
#

surely port to legacy ios

manic forum
magic hazel
#

didn't import

manic forum
#

:(

#

(weird, i just tried it, it seemed to work)

manic forum
manic forum
#

i don't think i care enough to continue working on it beyond this stage

magic hazel
#

main.js:1 Uncaught (in promise) TypeError: file.bytes is not a function
at fileDrop.ondrop (main.js:1:1156)

#

surely fix thsi

manic forum
#

which browser?

magic hazel
#

chrome

#

šŸ’€

manic forum
#

hm

#

i only tested it with firefox and safari but i would've expected it to work on chrome fr

magic hazel
#

i would hope so

#

chrome is the main browser

#

šŸ’€

#

oh shit

#

you can natively use c++ in swift

#

thats wild

#

swift is goated

manic forum
#

you know what else can use c++ directly

#

objective-c++

#

insane right

magic hazel
#

yes

#

but swift can use both that and objc and c++ and c

#

i might actually start putting some c and c++ into my codebases now

#

W

#

i like c++ generally

#

i dont like c

#

but

#

c++ is kinda neat ngl

crisp frost
#

see you next saturday

grim sparrow
#

there are certain frameworks that just don't work because of how swift c++ handles memory

magic hazel
#

ah fair

grim sparrow
#

another issue is it acts as a plague on ur packages

magic hazel
#

how so

grim sparrow
#

because you need to add cxx compiler support to literally everything

magic hazel
#

oh true

grim sparrow
#

i.e. if you depend on a package that depends on a c++ package, your package still needs to manually enable cxx

magic hazel
#

why the actual fuck is the qos overlay 8.0+ qos exists on ios 6 in objc

#

grr

magic hazel
#

so its literally viral

#

okay

#

that kinda does suck

light owl
gentle grove
#

could they not have come up with a better syntax for this šŸ„€

#

dang this is recent

#

oh no it's ES6

sour halo
#

I'm trying to reverse engineer a macos binary that I have the swift source to, and the decomp in ida looks basically nothing like the source code that i'm looking at, is there a reason for this or a way to make it a little bit understandable?

sour halo
#

does it compile to obj c or something

grim sparrow
#

c++

sour halo
#

hmmmm

#

I see a lot of functions with objc in the name almost implying there's some kind of bridge

grim sparrow
#

yeah, a bridging layer exists to talk to objc methods

#

but these bridges are just calling the objc runtime methods, the same way it would look for pure objc code

sour halo
#

ah so is that why it's such a mess

grim sparrow
#

depends what ur looking at

#

if its swift coding interacting with an objc framework its pretty good but if its pure swift then it becomes a clusterfuck because it can optimise itself to a much greater extent

sour halo
#

yea it's pure swift

#

that would explain the clusterfuck šŸ˜‚

#

does this "Swift plugin" do jack shit

grim sparrow
#

it deobfuscates symbols and does some small cleanups

cloud yacht
sour halo
#

hm

hexed knot
#

Anything else

grim sparrow
sour halo
#

is there a server or something specifically for swift reing?

grim sparrow
#

(to my knowledge anyway)

sour halo
#

damn unfortunate

lime pivot
#

also should have added that Apple are super unlike other companies like Facebook, they usually won’t adopt anything that isn’t bleeding edge. compare to Facebook who dogfoods changes to React/React Native for months before it hits github

#

can’t say I like Facebook, not even if you held a gun to my head (pls don’t do that), but they at least build things they want to use themselves. rather than other teams being sceptical and refusing to adopt it

native dune
#

i love zstd

#

thx meta

magic hazel
#

god uikit can be a pain

#

so many hacky fixes

#

delaying updates by like 0.01 of a second so it doesnt crash

radiant idol
magic hazel
#

so i doubt its a race condition

#

i mean

#

what im doing

#

is making one

#

but i dont know why i have to

#

either way it crashes on ios 6 anyways for other easons

#

ios 7 ironed out so many kinks in uikit

light owl
#

Thx meta

magic hazel
#

guys

#

where are the header dumps

#

for ios

#

limeos is back up gg

#

does anyone know of a fast way to get a screen capture

#

renderincontext is too fucking slow

magic hazel
#

how do you use private apis

#
      _captureScreenImage in FastScreenCapture.o
  "_CoreSurfaceBufferUnlock", referenced from:
      _captureScreenImage in FastScreenCapture.o
  "_IOMobileFramebufferGetLayerDefaultSurface", referenced from:
      _captureScreenImage in FastScreenCapture.o
  "_CoreSurfaceBufferLock", referenced from:
      _captureScreenImage in FastScreenCapture.o
  "_CoreSurfaceBufferGetBytesPerRow", referenced from:
      _captureScreenImage in FastScreenCapture.o
  "_CoreSurfaceBufferGetBaseAddress", referenced from:
      _captureScreenImage in FastScreenCapture.o
  "_CoreSurfaceBufferGetPixelFormatType", referenced from:
      _captureScreenImage in FastScreenCapture.o
  "_CoreSurfaceBufferGetHeight", referenced from:
      _captureScreenImage in FastScreenCapture.o
  "_CoreSurfaceBufferGetWidth", referenced from:
      _captureScreenImage in FastScreenCapture.o
  "_kIOMasterPortDefault", referenced from:
      _captureScreenImage in FastScreenCapture.o
  "_IOMobileFramebufferOpen", referenced from:
      _captureScreenImage in FastScreenCapture.o
  "_IOServiceMatching", referenced from:
      _captureScreenImage in FastScreenCapture.o
ld: symbol(s) not found for architecture x86_64
#

i cant figure ts out

magic hazel
#

okay i figured out how to get past that bit

#

but i cannot for the life of me get the iosurface to open

magic hazel
#

found a library that uses iosurface (pain in the ass to setup)

#

its like

#

5 times faster

#

lets fucking go

#

only downside is i can no longer build for simulators

magic hazel
#

i might end up ditching this methods lmao

#

its crashing on ios

#

6

#

grrrrr ios 6 why do you do thsi to me

grim sparrow
#

You can dynamically call private symbols so that:
A: No annoying linking
B: Easier to hide in App Store

magic hazel
#

also yeah i know about that

#

yes i know

#

dlopen

#

ive tried it

#

it's useless

#

the app has to link against the older framework

#

iosurface itself moved from privateframeworks to frameworks and has new symbols in ios 11

#

lol

#

plus

grim sparrow
#

Then just do if available on what you open

magic hazel
#

the other 2 libs it needs to link against

#

were removed in ios 9

magic hazel
#

lol

#

it cant compile with them there it implicitly links them

grim sparrow
#

Isn’t every iOS framework arm hm

magic hazel
#

No

#

Nearly every framework is x64

#

otherwise the sim wouldnt be able to use it

#

lol

grim sparrow
#

Sim is a diff story

grim sparrow
#

That’s not a huge downside

magic hazel
#

either way it doesn't seem to work on ios 6 even though apparently it was made for it?

#

kinda sucks but oh well

#

project if anyone is interested

#

its substantially faster than renderincontext thats for sure

#

renderincontext is fucking slow as balls

#
//
//  UIView+FastScreenshot.m
//  FastScreenshotDemo
//
//  Created by Anton Bukov on 27.08.13.
//  Copyright (c) 2013 Anton Bukov. All rights reserved.
//
//  Fix for iPad compatibility found on:
//  https://github.com/coolstar/RecordMyScreen/blob/master/RecordMyScreen/CSScreenRecorder.m

#import "IOSurface.h"
#import "UIView+FastScreenshot.h"

@implementation UIView (FastScreenshot)

+ (UIImage *)screenshot
{
    CGSize screenSize = [UIScreen mainScreen].bounds.size;
    float scale = [UIScreen mainScreen].scale;
    
    NSInteger width, height;
    // setup the width and height of the framebuffer for the device
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        // iPhone frame buffer is Portrait
        width = screenSize.width * scale;
        height = screenSize.height * scale;
    } else {
        // iPad frame buffer is Landscape
        width = screenSize.height * scale;
        height = screenSize.width * scale;
    }
    
    NSInteger bytesPerElement = 4;
    NSInteger bytesPerRow = bytesPerElement * width;
    NSInteger totalBytes = bytesPerRow * height;

    
    NSDictionary *properties = @{
        (__bridge NSString *)kIOSurfaceIsGlobal:@YES,
        (__bridge NSString *)kIOSurfaceBytesPerElement:@(bytesPerElement),
        (__bridge NSString *)kIOSurfaceBytesPerRow:@(bytesPerRow),
        (__bridge NSString *)kIOSurfaceWidth:@(width),
        (__bridge NSString *)kIOSurfaceHeight:@(height),
        (__bridge NSString *)kIOSurfacePixelFormat:@(0x42475241),//'ARGB'
        (__bridge NSString *)kIOSurfaceAllocSize:@(bytesPerRow * height)
    };
    
    IOSurfaceRef surface = IOSurfaceCreate((__bridge CFDictionaryRef)properties);
    
    IOSurfaceLock(surface, 0, nil);
    extern void CARenderServerRenderDisplay(int a, CFStringRef display, IOSurfaceRef surface, int b, int c);
    CARenderServerRenderDisplay(0, CFSTR("LCD"), surface, 0, 0);
    void * baseAddr = IOSurfaceGetBaseAddress(surface);
    NSData * data = [NSData dataWithBytes:baseAddr length:totalBytes];
    IOSurfaceUnlock(surface, 0, 0);
    
    CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, data.bytes, data.length, NULL);
    CGImageRef imageRef = CGImageCreate(width, height, 8, 8*bytesPerElement, bytesPerRow,
                                        CGColorSpaceCreateDeviceRGB(),
                                        kCGBitmapByteOrder32Host | kCGImageAlphaFirst,
                                        provider, NULL, false, kCGRenderingIntentDefault);
    
    UIImage * image = [UIImage imageWithCGImage:imageRef];

    CGImageRelease(imageRef);
    CFRelease(surface);
    
    return image;
}

@end
#

pretty cool stuff

#

shame it isn't seeming to work on ios 6

#

apple sucks

#

idk why they hide all this stuff away

#

it actually pisses me off

#

why do they give us devs such shit methods

#

they added drawviewhierachy in ios 7 asw

#

all i have is the awful renderincontext

#

ive optimised the shit out of the entire rest of the app

#

if you dont run renderincontext its a smooth 60fps with super heavy effects

#

3 blur kernels

#

and then boom renderincontext and it just chugs woeis

#

grr grr grr

tepid olive
magic hazel
#

That’s because I am kinda

#

Publicly logging my experience Ig allowing anyone to weigh in if they feel like it

lime pivot
#

that's enough to let another layout pass happen

wooden yarrow
desert nimbus
#

LF someone who has tinkered with SEPROM.

steady nest
#

go ahead, ask

desert nimbus
hexed knot
#

I will buy the domain for you

fervent frigate
#

do not

tepid olive
cosmic briar
#

github pages

rocky oriole
#

+1

magic hazel
magic hazel
#

And I already have a website

#

lol

grim sparrow
magic hazel
#

And a domain

magic hazel
#

Literally everything j hate every workflow

#

Web development sucks

#

I’ve tried numerous libraries including jekyll

rocky oriole
magic hazel
#

It's annoying and slow tho

hexed knot
#

Please

#

Or just upload text files

#

Wordpress

#

Something

magic hazel
#

lol

prisma kraken
#

make ai do the satans work (javascript)

gentle grove
#

Let's make a thread for jwi

#

solves everyone's problems

quaint rain
#

Unpopular opinion, vibe coding is cool as long as it’s not for a job

#

Like if you need a quick python script or html that’s fine

#

But if your doing something that your publishing outside of a personal website, nah don’t

gentle grove
#

I think you're always doing yourself a disservice by using ai

prisma kraken
#

if you choose to shit your own pants..

#

were in a free country

#

it was a bad analogy but you get it

#

what the fuck is flexing am i learning css flexboxes

#

oh my god it all makes sense its so cool

gentle grove
#

using CSS on a native UI framework šŸ„€

prisma kraken
#

it sounded like flexbox

#

I dont understand why it doesnt work in this menu though

#

id love to get rid of ā€œsiri suggested websitesā€

quaint rain
prisma kraken
#

i dont want ads

#

lmao im being entertained my moving shit around

#

this is so fun

desert nimbus
prisma kraken
#

HOWD YOU DO THAT

quaint rain
prisma kraken
#

not gonna lie this looks kinda good

#

instead of the search pills

#

or whatever they are

#

it goes back 😢

prisma kraken
quaint rain
prisma kraken
#

omg i forgot to enable it

#

HOLY SHIT looks good

#

test

quaint rain
prisma kraken
#

fr

#

i dont udnerstand why i cant move shit inside apps

quaint rain
hexed knot
quaint rain
#

and that

prisma kraken
#

makes sense th

#

i opened it on the springboard so it does its thing on the springboard

#

im getting rid of fucking siri suggestions

prisma kraken
#

idk why i cant always open flex

#

im holding the status bar

hexed knot
#

Tap and hold anywhere on the screen with three fingers

prisma kraken
#

that doesnt work at all

#

Nvm it does

quaint rain
prisma kraken
#

loo

#

lol

quaint rain
# prisma kraken lol

Select item, click on it, in this case YYLabel, scroll to first property change the value to the text u want

quaint rain
#

Wait

#

No the little bar thing

prisma kraken
#

No no i found it

#

I cant change it tho

#

just says description

quaint rain
prisma kraken
#

okay found it

#

i crashed the fcking

#

phone

#

i think

#

its running like delayed

#

is there emergency restart springboard

quaint rain
quaint rain
quaint rain
prisma kraken
#

okay found it

prisma kraken
#

hehe

#

im just a silly

#

Oh wow this is dangerous

quaint rain
prisma kraken
#

Im not gonna do anything tho

quaint rain
cloud yacht
prisma kraken
prisma kraken
#

how can i

#

delete

#

stuff

harsh junco
#

Ok

magic hazel
#

me when xcode freezes up every 2 hours essentially forcing me to go outside

lime pivot
magic hazel
#

i just have to do this

#
public func textViewDidChange(_ textView: UITextView) {
        backgroundView.frameInterval = 60*60*60
        let width = textView.bounds.width > 0 ? textView.bounds.width : 100 // fallback
        let size = textView.sizeThatFits(CGSize(width: width, height: 1000000))
        let clampedHeight = max(40, min(size.height, 120))
        
        if clampedHeight != self.bounds.height {
            self.invalidateIntrinsicContentSize()
        }

        DispatchQueue.main.asyncAfter(deadline: .now() + 0.05) {
            self.backgroundView.frameInterval = 6
        }
    }```
#

if i don't then it crashes i'm assuming because sometimes it tries and captures the frame while its in animation

#

and im guessing there are a few frames

#

where the bounds are functionally zero

#

and it craps out

#

it also can't snapshot an animating view very well so

#

its fine tho

magic hazel
#

holy fuck

#

i am actually crashing out

#

idk why io surface captures dont work on ios 6 for images

fervent frigate
tepid nacelle
fervent frigate
tepid nacelle
marsh ocean
#

i did a thing i think its cool

trail nimbus
#

Cool

dusk cove
#

bad mobile support

magic hazel
magic hazel
#

LMAO

#

i think i figured out why atomic_store happens

#

i am so stupid

#

😭

#

because of my laziness

#

i didnt build compiler-rt

#

turns out

#

compiler-rt has its OWN implementation of atomic_store

#

now it just so happens

#

that ios 7+ DOES have atomic_store in libsystem.b

#

but swift was never meant to link against that

#

it was meant to link against compiler-rt's atomic_store

#

now i have to rebuild all my toolchains AGAIN

reef trail
#

did you need to split this into 14 messages

gentle grove
reef trail
#

nothing wrong with it i find it interesting, but realistically it doesn't need to span my whole viewport 😭

gentle grove
#

i think it's past the point of getting in the way of other development conversation happening

#

i see people just give up talking in here because it gets flooded by jwi's singular blog

#

even i was never as bad as this

magic hazel
#

i mean here's the thing though like that's all good and well

#

but this is a public channel

#

and generally most of the time when i'm talking here the channel is fairly dead

#

in fact most of the time the channel is dead anyways

#

and even when it's not, generally when i'm dev logging it's at a time of day where most people are asleep and so i don't really find that i interrupt others conversations much, or at least, i'm not conscious of it. plus, if there's already a conversation going on in here, either i'll relate to it and join in or not relate to it and not say anything like a regular person. it just so happens that in the periods of time where this channel would usually be filled with nothing, i dev log my experience in hopes of 1 storing it 2 allowing others already here to see it and not hiding it away on the millions of dev logs that exist and will never be found and 3 easily allowing myself to ask questions about my experience

#

which, if i'm not wrong, is the point of this channel

#

now, i do tend to split my messages up a lot which i can certainly understand to some is annoying, and sometimes i do try and put extra effort into not doing so, but this just so happens to be the way that i talk online due to various reasons that i'd rather not get into. i do however apologise if i have ever accidentally cut off or interrupted someones thoughts/conversations

reef trail
#

not really a running commentary

magic hazel
reef trail
#

well points 1 and 3 would still be solved if you ran your own dev log

#

you could make a thread off this channel, then you get best of both worlds šŸ¤·ā€ā™‚ļø

#

i didn't mean to insult you it's just whenever i see this channel nowadays i miss the actual conversation and just see a wall of text which could've been a sentence

magic hazel
#

alr

#

ill limit my use of this channel, sry if i've made the experience worse for anyone

magic hazel
#

Well, I think I have solved atomic store. The method in which I have gone about doing this is a bit wacky, so I will have to document it

#

FUCK YES

#

Step 1:
Go to compiler-rt/lib/builtins/CMakeLists.txt
Step 2:
At the place

  set(GENERIC_SOURCES
    ${GENERIC_SOURCES}
    atomic.c)
endif()```

change it to
```set(GENERIC_SOURCES
  ${GENERIC_SOURCES}
  atomic.c)```

Step 3
Rebuild LLVM via the swift build script using the command
```./utils/build-script \
  --release \
  --ios \
  --install-prefix=/tmp/swift-ios-toolchain \
  --darwin-deployment-version-ios=7.0 \
  --darwin-deployment-version-osx=10.15 \
  --extra-cmake-options="-G Ninja \
    -DLLVM_BUILD_RUNTIME=ON \
    -DSWIFT_INCLUDE_TESTS=OFF \
    -DCOMPILER_RT_BUILD_SANITIZERS=OFF \
    -DCOMPILER_RT_BUILD_BUILTINS=ON \
    -DCOMPILER_RT_ENABLE_IOS=ON \
    -DCOMPILER_RT_USE_COMPILER_RT_BUNDLED=ON \
    -DCOMPILER_RT_USE_LIBCXX=ON \
    -DCOMPILER_RT_HAS_ATOMICS=ON" \
  --skip-build-benchmarks \
  --skip-test-ios \
  --skip-test-ios-simulator \
  --skip-build-linux \
  --skip-build-freebsd \
  --skip-build-cygwin \
  --skip-test-swift


Step 4
Go to build/Ninja-ReleaseAssert/llvm-macosx-x86_64/tools/clang/runtime/compiler-rt-bins/lib/builtins
Step 5
Use

  libclang_rt.builtins_armv7_ios.a \
  libclang_rt.builtins_armv7s_ios.a \
  libclang_rt.builtins_arm64_ios.a \
  -output libclang_rt.ios.a```
to build a fat binary
Step 6
Go to build-script-impl in swift/utils
Step 7
find this line
if [ -f "$HOST_CXX_BUILTINS_DIR/libclang_rt.ios.a" ]
and where it has a path linking to the library, paste the path to your recompiled fat binary
Step 8 rebuild using this command (do not clear build folder)
```./utils/build-script \
  --release \
  --ios \
  --install-prefix=/tmp/swift-ios-toolchain \
  --darwin-deployment-version-ios=7.0 \
  --extra-cmake-options="-G Ninja \
    -DLLVM_BUILD_RUNTIME=ON \
    -DSWIFT_INCLUDE_TESTS=OFF \
    -DCOMPILER_RT_BUILD_SANITIZERS=OFF \
    -DCOMPILER_RT_BUILD_BUILTINS=ON \
    -DCOMPILER_RT_ENABLE_IOS=ON \
    -DCOMPILER_RT_USE_COMPILER_RT_BUNDLED=ON \
    -DCOMPILER_RT_USE_LIBCXX=ON \
    -DCOMPILER_RT_HAS_ATOMICS=ON" \
  --skip-build-benchmarks \
  --skip-test-ios \
  --skip-test-ios-simulator \
  --skip-build-ios-simulator \
  --skip-build-linux \
  --skip-build-freebsd \
  --skip-build-cygwin \
  --skip-build-osx \
  --skip-test-swift
#

in case anyone wants to know

gentle grove
lofty juniper
#

This.

magic hazel
#

Okay

#

Sorry about that, I tend to get very focused and consumed by the things that I'm passionate about working on and generally there hasn't been a lot of people who take interest in said activities let alone have discussions about them, and especially with this I guess I have been overly excited about developments since I haven't really done something like this before and actually had it work out properly, but I don't mean to stifle other's conversations and I apologise if I have done so. I fear that in oversharing and not having a filter on my thoughts I have had a negative impact here rather than a positive one, which is not what I want to do.

radiant idol
#

@magic hazel yk what you should do? create a thread in the Theos server for your dev log

Whoever wants to access it will be able to, and whoever doesn’t, won’t

hexed knot
#

Do not use discord as a place to store info

#

What happens when you get banned or this server gets nuked or deleted

magic hazel
#

Yep fair enough

#

It’s less of a permanent storage and more of idk a storage that’s convenient but I get your point and I do try and backup anything important to a better place, but obviously it’s not ideal for anyone here to have to wade through walls of my unfiltered thoughts

magic hazel
#

Does anyone know anything about Compiler-RT beyond the surface level

gentle grove
#

You know it's bad when I mistake a JS framework for being swiftui

magic hazel
#

the second or the first one šŸ’€

#

because both resemble swiftui-like pattens

gentle grove
gentle grove
#

That's what people make fun of it for in my experience

#

It's what I've seen

magic hazel
#

to swiftui

#

but the first is too

gentle grove
#

Different parts of it I would think

magic hazel
#

the first looks like stacking issues, the second looks like chained modifier issues

#

yep

gentle grove
#

not like you would be able to write the same code in both ways

magic hazel
#

nah bcus the first one is just "stack style" but its really not stacking

#

but yeah nested code like that is a big swiftui issue

#

this is why you split views into smaller views

wooden yarrow
light owl
gentle grove
light owl
#

No i mean one fix fixes another thing along with what i was fixing originally

wooden yarrow
gentle grove
light owl
#

Dont care

gentle grove
#

So you could fix two bugs by doing a single change

#

Yhere wouldnt be an and

gentle grove
wooden yarrow
#

perhaps

faint timber
#

dude thinks he's the git police

magic hazel
#

Anyone know why UIKit can't be run on a background thread

#

It seems like an odd limitation

#

Can SwiftUI be run on a background thread?

grim sparrow
magic hazel
#

Well, interestingly, it's tanking my performance

grim sparrow
#

Then you’re doing it wrong

magic hazel
#

Well sadly Apple decided to make renderInContext CPU based

#

And since it always runs on the main thread, it's causing immense slowdown

grim sparrow
#

There’s a lot of good Apple talks on how to optimise your app for this main thread model

magic hazel
#

Apple has never provided a non single threaded model for snapshotting the view in UIKit to my knowledge

#

They themselves don't even use their API for it

#

They use IOSurface

crisp frost
#

Just draw your app directly on the framebuffer and use kernel apis directly to get touch events

grim sparrow
magic hazel
#

And they basically just say

#

"Go multithreaded"

#

Which, no shit

grim sparrow
#

You should thumbnail the image before presenting it

#

If I understood they correctly

#

Wait

magic hazel
#

?

grim sparrow
#

Why are you rendering to a uiimage

magic hazel
#

What I need is a realtime capture of the screen

#

So that I can blur it

grim sparrow
#

There has to be better methods of blurring screen content than capturing it, blurring the image and then displaying the image

magic hazel
#

I would be happy to implement such a method

#

However, I have spent a good deal of time searching

#

If anyone knows one I will try it

#

Remember that this is supposed to act like any regular UIBlurEffect

#

So it has to dynamically reflect what's under it

grim sparrow
#

Have you looked into reverse engineering how uiblureffect works

magic hazel
#

I already have

#

IOSurface

#

They literally just reuse framebuffer from what I can see

#

I have tried to implement their method

#

However for whatever reason, video capture works, whereas image capture does not

#

I tried to use RecordMyScreen as a jumping off point

#

It works on iOS 7

#

But not on iOS 6

#

But video capture works on both

#

It is very confusing why

frank fossil
#

since itself is rendering the views, it can read the pixels and apply blur effect in place(?)

gentle grove
#

You would do that

light owl
#

rt

magic hazel
#

Bro this cannot get any funnier


harsh junco
magic hazel
#

Yk what’s funny

#

Render in context brings my iPhone SE 2 to a halt when running 2 full res captures

#

That’s how slow it is

#

It’s truly a terrible API

#

I wish they exposed their actual api

magic hazel
#

Okay I'm actually really confused

#

When I dismiss my ViewController, my images are still held in memory

#

I really don't understand why

grim sparrow
#

A view controller being dismissed != deallocated straight away

magic hazel
#

It NEVER gets deallocated

grim sparrow
#

Like ever ever ever

magic hazel
#

never

#

it literally memory leaked last night

#

i left the sim on

#

and it leaked

#

it NEVER deallocs

#

its the images

grim sparrow
#

If you create a memory graph in Xcode can you see what’s holding a reference to your vc

magic hazel
#

its not the vc

#

its the images

#

inside

#

also i tried that but i have no idea how to navigate the graph

grim sparrow
#

But then surely if the images are inside your vc somehow there’s a reference somewhere

#

otherwise they’re not in your vc

magic hazel
#

example of one

#

Idk what's happening in here

#

I can see a bunch of stuff that i know about in isolation but idk how it's connected or how to read the graph

grim sparrow
#

They’re relationships

#

Every arrow indicates something holding a reference to it

magic hazel
#

Wtf

#

😭

#

That looks like every single reference that could be possibly held is still being held

grim sparrow
#

It suggests that the vc that had these views still exists in memory

magic hazel
#

Yes

#

But it isn't i dont thin

#

I only see 1 viewcontroller in memory

grim sparrow
#

So either:

  • One of your views is holding a reference as part of the view controller life cycle
  • Your view is being leaked in some way
magic hazel
#

i thought it was this but i got rid of this

func setupWebsocketWatchers() {
        let center = NotificationCenter.default
        observers.append(center.addObserver(forName: .messageCreate, object: nil, queue: .main) { [weak self] notification in
            self?.createMessage(notification: notification as NSNotification)
        })
        observers.append(center.addObserver(forName: .messageDelete, object: nil, queue: .main) { [weak self] notification in
            self?.deleteMessage(notification: notification as NSNotification)
        })
        observers.append(center.addObserver(forName: .messageUpdate, object: nil, queue: .main) { [weak self] notification in
            self?.updateMessage(notification: notification as NSNotification)
        })
    }
    
    deinit {
        for observer in observers {
            NotificationCenter.default.removeObserver(observer)
        }
        
        print("āœ… DMViewController deinitialized")
    }```
#

also it DEFINITELY deinits

#

but the messageviews don't

#

the vc itself does

#

idk what on earth is talking to the messageviews

#
deinit {
        unloadHeavyContent()
        print("Deinit!")
    }```

this never runs
#

this is the vc

grim sparrow
#

Line 164 165?

magic hazel
#

ah true

#

ill test

grim sparrow
#

I’m on mobile, wasn’t sure if I was missing a removeObserver somewhere

#

That is the only issue I can see though from my scan through

magic hazel
#

nope

#

still didnt goa way

#
let center = NotificationCenter.default
        
        observers.append(center.addObserver(forName: UIResponder.keyboardWillShowNotification, object: nil, queue: .main) { [weak self] notification in
            self?.keyboardWillAppear(notification: notification as NSNotification)
        })
        
        observers.append(center.addObserver(forName: UIResponder.keyboardWillHideNotification, object: nil, queue: .main) { [weak self] notification in
            self?.keyboardWillDisappear(notification: notification as NSNotification)
        })```
grim sparrow
#

Oh

#

You remove the observers in deinit

#

But deinit won’t be called until there are no references

#

So it will never run

magic hazel
#

āœ… DMViewController deinitialized

grim sparrow
#

Really?

magic hazel
#

it does run

grim sparrow
#

what

magic hazel
#

yep

#

it runs

#

lol

#

it 100% runs

#

the gesture recogniser gets dealloced too wtaf is going on

#

😭

#

its not even my websocket

#

i am actually completely lost here

#
attachment.fetch { [weak self] content in
            guard let self = self else { return }
            guard let image = content as? UIImage else { return }
            
            let imageView = UIImageView(image: image)
            imageView.contentMode = .scaleAspectFit
            imageView.translatesAutoresizingMaskIntoConstraints = false
            let originalSize = image.size
            let aspectRatio = originalSize.height / originalSize.width

            self.messageAttachments = imageView
            
            self.messageContent.addArrangedSubview(imageView)
            NSLayoutConstraint.activate([
                imageView.leadingAnchor.constraint(equalTo: self.messageContent.leadingAnchor),
                imageView.trailingAnchor.constraint(equalTo: self.messageContent.trailingAnchor),
                imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: image.size.height / image.size.width)
            ])
            self.setNeedsLayout()
            self.layoutIfNeeded()
        }```
#

i run weak self on literally everything

#

nothing should be retained

grim sparrow
#

Does this happen every time

#

Or just during tests

#

Like

#

It’s a rare issue or constant

magic hazel
#

always

#

bruh the fucking stack view isnt getting removed

#

what on earth is still referencing the stack view

#

😭

#

yeah okay so removing the stackview on deinit solves most of the issues but there's still stuff left over

#

i do not want to resort to manual cleanup though

grim sparrow
#

If you’re still stuck when I wake up I’ll have a proper look with a fresh head

grim sparrow
magic hazel
#

i know

#

chatgpt's only solution is "oh nil out all contents"

#

like fuck right off

#

thats not fixing the problem

#

its a bandaid

#

useless ahh

grim sparrow
#

Possibly a dumb question, but do you have unit tests for your old iOS UIKit layer to verify it’s not an issue with that somewhere

#

I see references to if available iOS 7

magic hazel
#

what layer?

grim sparrow
#

Didn’t you write a library that lets you use new uikit apis on older devices

#

I don’t think I’m going insane I swear you did this like 2 weeks ago

#

I’m just spitballing, this is a really odd issue

grim sparrow
magic hazel
#

rn im literally using actual apis tho

#

i thought it was that

#

i changed deploy target to max

#

so it auto gets rid of those

#

😭

wooden yarrow
#

!

grim sparrow
#

I’ll have another look tomorrow when I’m not hazy af, it’s most likely something really annoying (my favourite)

grim sparrow
grim sparrow
#

Memory leaks are my favourite issue to debug icl

wooden yarrow
grim sparrow
#

Sure, it can help give you more granular results, but the end result would be the same

#

Fwiw this has been on my to do list for so long at work and I’m slowly increasing our test coverage

wooden yarrow
magic hazel
#

i hate memory leaks

wooden yarrow
#

without a proper debugging setup

#

pain

#

NSLog(@"") was basically my only tool

#

and also top

magic hazel
#

maybe its my constraint system...? nah it cant be its using real constraints

#

well

#

i found the culprit

#

its inputview

#

i just dont know why

#

i dont know what inside of inputview is calling it

magic hazel
#

if i make snapshotview a weak var it fixes the issue

#

i think thats not a hack

#

i think thats actually reasonable

magic hazel
#

lol yeah i know why

#

snapshot view is literally owned already

#

so if i dont make it a weak var itll cause a retain cycle

#

bruh im a dumb ass

#

also i didnt put weak self in the addaction closure so it was going to be retained either way

magic hazel
#

okay so memory leaks have been avoided

#

mostly

#

however

#

there's 5mb of god knows what that WILL not disappear and i'm unsure how to find it

#

it keeps building up on every reopen

#

possible thoughts?

grand hawk
#

@magic hazel

light owl
#

@native dune Is it working

native dune
#

Yeah

solar wing
#

Can someone open this app on iPhone X iOS 16.7.12, with jailbreak palehide (dopamine roothide) paid reward . https://apps.apple.com/br/app/c6-bank-cartão-conta-e-mais/id1463463143

AppĀ Store

ā€ŽBaixe o app do C6 Bank e abra sua conta digital em real, dólar ou euro em minutos. CartĆ£o de crĆ©dito (sujeito a anĆ”lise), pontos que nĆ£o expiram, uma das menores taxas de cĆ¢mbio do mercado e mais.

Somos um banco completo com tecnologias de seguranƧa exclusivas para proteção do seu dinheiro no Brasi…

faint lionBOT
#
C6 Bank

You can use vnodebypass!

Note

Exercise caution when using kernel-level bypasses. Not working on unc0ver (14.6+) due to libkrw needing an update.

dusk cove
mighty smelt
#

Hey, if i wanted to develop small personal tweaks e.g. stop my phone from vibrating when my watch is not connected to it; where could i learn that

faint lionBOT
timid furnace
#

that is intended toward developing jailbreaks themselves

magic hazel
grim sparrow
#

@visual meadow do you have any neat/cool way of doing XPC between a troll store app and an executable spawned by that trollstore app. I can't use standard xpc mach services because that relies on the daemon being spawned by launchd.

Is there any dumb fuckery I can do

cloud yacht
#

stdin/stdout?

grim sparrow
cloud yacht
#

but will it realistically do that?

grim sparrow
#

Yes

#

That’s the whole point of offloading the core logic to daemon

cloud yacht
#

OK my next best idea is some sort of socket

#

Idk if you can make Unix sockets but otherwise just open a port

frank fossil
#

launchd is just the one reserving the Mach name for you so others can’t impersonate, if you have a name that’s not reserved you can freely register it

grim sparrow
visual meadow
grim sparrow
#

I’ll try it in the morning if that works it’ll be such a life saver

frank fossil
#

You can even register your process’s task port for fun

native dune
#

@light owl is it working

light owl
versed wasp
#

Does Apple place a limit on how many times an app can toggle the flashlight in one second?

grim sparrow
dusk cove
gentle grove
#

serial communication via flashlight šŸ”„

grim sparrow
#

@frank fossil should I be running bootstrap_check_in before or after starting my NSXPCListener?

frank fossil
grim sparrow
#

its doing something

#

Without doing check in I get

[Aemulo] Error With Service: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.amywhile.aemulod was invalidated: failed at lookup with error 3 - No such process." UserInfo={NSDebugDescription=The connection to service named com.amywhile.aemulod was invalidated: failed at lookup with error 3 - No such process.} after trying to get the remote proxy object

#

But if I do it with bootstrap_check_in before starting the listener (and after) the call to remoteObjectProxy in the client becomes blocking

#

and will continue to block until I kill the daemon

#

so its doing something

#

Aemulo here is my client app.
aemulod is the daemon, which is just spawned with posix_spawn from inside Aemulo and runs setsid so it can become long lived

aemulod is whats starting the listener, and I want to be able to connect to it from the aemulo app

#

- (BOOL) listener:(NSXPCListener *) listener shouldAcceptNewConnection:(NSXPCConnection *) newConnection; is just never being called in the daemon it seems. theres a strong reference to the listener and the daemon is alive (-[NSRunLoop run])

frank fossil
#

What if you use C API instead (eg xpc_connection_create_mach_service)?

#

also this might be related

grim sparrow
#

gimme a sec to setup the c api version. just for clarity, bootstrap_check_in does succeed.

Check in result: 0x00000000, Port: 6403

#

wait i never return an output how does that compile without getting mad

grim sparrow
#
xpc_type_error (<OS_xpc_error: <dictionary: 0x211c39360> { count = 1, transaction: 0, voucher = 0x0, contents =
    "XPCErrorDescription" => <string: 0x211c394f8> { length = 18, contents = "Connection invalid" }
versed wasp
frank fossil
copper sparrow
#

how do i install cycript?

grim sparrow
#

I can't find it on apple docs or just even searching up the symbol on github

#

oh nvm im really bad at searching

frank fossil
#

lmao

grim sparrow
#

I'm basically at this point, I've tried commenting out the listener checkin (which is just an extension method). As soon as I call resume the connection fires the connection invalid method.

grim sparrow
magic hazel
#

WHAT

#

I thought you had to bridge 😭

#

That would have been so useful when I was trying to fix the global dispatch queue

grim sparrow
#

this is honestly my favourite piece of swift documentation

#

a bunch of shit that its in the language but not "public"

#

@_marker is an incredibly nice one

magic hazel
#
WARNING: This information is provided primarily for compiler and standard library developers. Usage of these attributes outside of the Swift monorepo is STRONGLY DISCOURAGED.

#

I am going to use this so much

#

Actually, I've used one of these before. Before @lavish mirage was a thing, it was @_functionBuilder from memory, and back when I thought I was going to be stuck with Swift 5.1, I used it a decent bit

grim sparrow
#

@_spi is actually really helpful and should just be public atp

magic hazel
#

Sorry result builder (why does it do that 😭 )

magic hazel
#

@_unavailableFromAsync Will be useful when converting async await codebases

grim sparrow
magic hazel
grim sparrow
#

Swift 5.5 async await sucked balls, it only got good with Swift 5.10

magic hazel
#

Maybe one day I will backport the backport of concurrency

grim sparrow
#

if im understanding you correctly

#

its also not an error to mark a function as async that makes no await calls

#

but thats besides the point

magic hazel
#

Yes but the maintainer should have an easier time seeing

grim sparrow
#

imo a warning would be a lot better than an error

#

because its not code breaking

#

error is for something that would cause a crash. this is just something for the compiler to optimise out

magic hazel
#

Calling await is a crash

grim sparrow
#

at all?

magic hazel
#

Yep

grim sparrow
#

see thats diff šŸ˜“

magic hazel
#

How is it supposed to resolve? Even the concurrency backport is built for iOS 13+, every single call is marked as iOS 13+ in semantics

grim sparrow
#

see I keep forgetting that you're trying to backport software from iOS 13 to iOS 6

#

thats just such an odd thing to do that these things never cross my mind

magic hazel
#

Fair enough

#

Also I swear I see @_exported used so much

#

Why is it not public?

grim sparrow
#

a lot of these are just sat in proposal hell

#

@_implementationOnly import Thesis was only just added in Swift 6.0 as internal import Thesis

#

and in Swift 6.2 internal import is the new default

#

currently the default is public import

magic hazel
#

Why did it change I liked it being public

grim sparrow
#

makes more sense imo

magic hazel
#

But it’s been that way forever

grim sparrow
#

everything was done that way forever until it wasn't

#

it makes a lot of sense for package developers

#

If I'm writing an SDK and I import an internal library that we use, if I publicly import the library then it is exposed in the SDK docs. If I internally import the library then it is hidden from the public interface and its symbols are stripped

magic hazel
#

I mean I’m not saying internal imports don’t have a place they definitely do

#

But making it the default?

grim sparrow
#

for 99% of people it won't matter and they won't even notice

#

its only really gonna matter for sdk devs

magic hazel
#

I feel like swift 6 has added a whole bunch of rules that are going to bit me in the ass when I eventually port it and switch to it

grim sparrow
#

yup

magic hazel
#

Yk whats funny, even by swift 5.6 there are warnings about ā€œthis will be an error in swift 6ā€

grim sparrow
#

It's a bunch of rules to force you to write code correctly

#

the vast majority of the errors/warnings it throws are about stopping race conditions

magic hazel
#

Does it stop me from doing a dispatch race condition

#

Or is it just swift concurrency

grim sparrow
magic hazel
grim sparrow
#

it will error if you try and send a non thread safe object to a different thread

magic hazel
#

Oh that’s okay… I think

grim sparrow
#

if your object isn't marked as sendable and you throw it into a closure that is marked as @escaping

#

it will yell at you

#

because thats a potential RC

magic hazel
#

Oh

#

That IS a problem

#

All my completion handlers are escaping

grim sparrow
#

@escaping means this closure can be called at any time on any thread

magic hazel
#

Yes I know

#

Sendable means accessible from any thread

#

However generally I don’t touch sendable or mainactor as they’re part of swift concurrency

grim sparrow
#

technically it more means that its safe to pass this object between threads, not that its safe to access from any thread

#

well

#

for value types it means you can pass this data between threads

magic hazel
grim sparrow
#

for object types it means it can be accessed from any thread

magic hazel
#

However I don’t generally end up following the best code practices often as my code bases are a mixture of very modern and legacy patterns sometimes

#

Generally it’s UIKit that shoots me in the foot sometimes, and it’s never really the things you notice

#

It’s small things, like ā€œisdateintodayā€ being iOS 7+, or the global(qos) api beinf 8+, both of which i did end up patching in with no issues

grim sparrow
#

Swift 6 is actually pretty good at forcing you to do UIKit properly because it will yell at you if you do anything not from the main actor

magic hazel
#

Plus, Facebook made their own asynchronous UIKit, apparently it’s very fast

grim sparrow
#

they're specifically marked that way

magic hazel
#

I see

grim sparrow
#

but its things like view.addSubview(_ view: UIView)

#

that are marked as @MainActor

magic hazel
#

I wonder why UIKit isn’t asynchronous or why it couldn’t be because I’ve seen a LOT of ui libraries that are with no issues at all, I get the idea behind it but it’s a bit flawed

#

Is SwiftUI asynchronous?

grim sparrow
#

you know what im gonna say to that

magic hazel
#

Look, it does make the app more predictable but man is it ever constraining

#

Especially when so much of UIKit is CPU bound, that’s really the part that gets to me

grim sparrow
#

it was like an hour long presentation with a bunch of useful slides and graphs

#

and since I watched it and understood it I've never questioned it again

magic hazel
#

I watched the grand central dispatch one and it made me fall in love with it ever since

#

It was the iOS 8 one

grim sparrow
#

It was around wwdc2021 when pro motion came to the iphones and the whole point was how to get your app running at 120hz

magic hazel
grim sparrow
#

its actually not though

#

think about it. as phones got higher refresh rates, they got better cpus and gpus

magic hazel
#

Especially since like I said before so much of UIKit is cpu bound when in reality it should be handled by the gpu

#

Quick question, whats the difference between UIWebView and WKWebView fundamentally

grim sparrow
#

asynchronously loading new cells

#

I remembre now

#

I was watching it when making my discord client

#

this one didn't explain uikit main thread but it was very helpful

magic hazel
grim sparrow
#

a bit of both

magic hazel
grim sparrow
#

it talks about 4 diff things you can do

magic hazel
#

Why is ui table view not deprecated

magic hazel
grim sparrow
magic hazel
#

I’ll take a look, if one of them is preloading data that’s iOS 10+ sadly

magic hazel
grim sparrow
grim sparrow
magic hazel
# grim sparrow isn't ur whole thing backporting

It is, but something like that isn’t a mere extension. I could try, but I won’t be reimplementing UICollectionView as a whole. It’s always easier to backport something when it’s open source

#

Speaking of which, is there any way to use FoundationNetworking on iOS

grim sparrow
#

everything is open source if you know how to use ida

tender narwhal
#

iOS 26

grim sparrow
#

iOS 27

tender narwhal
#

What

magic hazel
grim sparrow
#

I know its possible to use CFNetwork

#

because that was one of the only ways to do web sockets for the longest time

magic hazel
#

I need it’s URLSession implementation, I’m not happy with my own backport (this only occurred to me after I saw how much more advanced the source was)

#

Maybe I could just copy paste it in…

grim sparrow
#

what specific stuff are you looking to backport

#

oh wait

#

you'll love this, theres a piece of documentation in URLSession that is just wonderufl

magic hazel
#

Do show

#

I hate how they say ā€œbuild with the iOS 15 sdkā€

magic hazel
#

Because that’s not really what you’re doing to have compatibility as much as you are targeting iOS 15

grim sparrow
#

Unless you have a specific reason to use URLSession, use Network framework for new WebSocket code.

#

they added the api and then in the same docs update added a note saying pls dont use me

magic hazel
#

šŸ’€

grim sparrow
#

and that forum post has the info why

magic hazel
#

Wild

#

I don’t really want the websockets, those are iOS 13+

#

And probably always will be since they’re built off swift concurrency

grim sparrow
#

HA

#

the current recommended lib to use doesn't use swift concurrency

magic hazel
#

That’s wild

grim sparrow
#

well

magic hazel
#

That’s odd though, swift 5.10+ concurrency is excellent

grim sparrow
#

NetworkConnection does

#

but NetworkConnection is basically an async wrapper of NWConnection which is a Swift warpper of the C nw_connection_t

magic hazel
grim sparrow
#

but because NetworkConnectionis iOS 26.0+ it basically doesn't exist yet

magic hazel
#

šŸ’€

grim sparrow
#

give it 5 years, then we can start using it

magic hazel
#

Ngl so much of foundation STILL just wraps objective c

grim sparrow
#

interop

magic hazel
#

It’s annoying for me because those are the things that make it harder to use funnily enough

#

When a type is purely in the stdlib it resolves itself

#

I also need core libs foundation URLComponents, as they are iOS 7+ as well

magic hazel
grim sparrow
#

I’m so gonna upset someone by not giving the exact reason from the c standards

By default you have to prefix the decl with struct or enum. So struct MyStruct val. The convention is to add the typedef so that MyStruct_t actually means struct MyStruct

#

Makes things look neater

magic hazel
#

So it’s convention

#

Got it

grim sparrow
#

Yeah

magic hazel
#

Add it to the list of things I dislike about c ./j

#

Ive become more receptive to C, C really Isnt so bad, it’s only bad when you try and use it to do things it was never built for

grim sparrow
#

I’m pretty sure it’s one of the things clang tidy will scream at you over

magic hazel
#

If you look at C as a language that exists as a single layer abstraction over asm it’s place starts to make a whole lot more sense

grim sparrow
#

I had a project that would always crash in release mode and I never figured out what the bug was, I just did everything clang tidy said and it stopped happening

#

Oh and fwiw that project was in production for like 3 months

magic hazel
#

LOL

#

Yeah okay so sadly most of that presentation was iOS 15+

grim sparrow
#

I write a lot of C for embedded systems where it’s perfect

#

Because the alternative is asm, which limits what chips I can run on

wooden yarrow
#

i cba to write 100 hashmap implementations

grim sparrow
#

lol

#

the code we get given doesn’t work

#

88 compiler errors from the damn template code

#

last week

wooden yarrow
#

"close enough" ass code

grim sparrow
#

It was all just variable typos and stuff

#

I think nearly all of the errors could be solved with Xcode’s auto suggestion

#

and the reason is:
A: The code is never tested before it’s given to us
B: It’s quickly thrown together from multiple sources with the pray they all connect

#

as opposed to just being written by the lecturer

frank fossil
grim sparrow
#

That’s what I was trying initially

#

I’m gonna experiment with just using Mach messages directly. I think the problem is I can’t give my xpc_connection the Mach port I get from check_in. So it’s just asking launchd and then launchd says no

#

I could try looking at figuring out how to just hand the xpc_connection my Mach port, it is open source…

frank fossil
grim sparrow
#

I believe there has to be. In the docs for bootstrap_check_in it says it can be used for xpc

frank fossil
#

Before going to that way, I have another approach (can’t test as I only have a jailed device with me rn)

xpc_endpoint_t endpoint = xpc_endpoint_create(connection);
// (ignore the name, it’s only used internally to extract the port to pass it to iOS simulator’s launchd)
mach_port_t port = xpc_endpoint_copy_listener_port_4sim(endpoint);
bootstrap_register(bootstrap_port, "mach.service.name", port);
zealous prism
#

I’m developing a C++ UI library built with OpenGL, heavily inspired by SwiftUI’s declarative design. As a small showcase, I’ve even recreated a portion of the iOS lock screen using it.

harsh junco
#

that’s very neat

grim sparrow
#

opengl is everywhere

#

vulkan is pretty close to everywhere except on Apple :/

#

directx is winblows

harsh junco
#

not official but

grim sparrow
#

its the best we've got

#

hell if it was a system library i wouldnt care

#

but having to bundle vulkan and moltenvk in apps is so infuriating and a major blocker for a lot of devs

grim sparrow
#

but every app has to statically link it

#

so every app has to bundle it

#

as opposed to just linking against /usr/lib/libMoltenVK.dylib

floral notch
#

yo, has anyone evaluated the landscape of objc_msgSend tracers in 2025? i used to use inspectiveC back in the old days and that one was great, but now my needs are different, in that it needs to work outside the jb ecosystem (and ideally x64 linux)

grim sparrow
#

Frida is still a good option I use a lot

floral notch
magic hazel
floral notch
#

I'm inclined to go with the 3rd one, or yeah, just learn Frida

grim sparrow
#

Well from looking at those 3, I can tell you that Frida is still actively being maintained and supports inspecting Windows, Linux and *OS

magic hazel
#

I doubt it will ever go away

grim sparrow
#

just not when or which release

hollow oar
grim sparrow
#

(granted its been deprecated for like 5 years now)

floral notch
#

The only problem is frida is LGPL

magic hazel
#

It is so ubiquitous and has been ubiquitous for so long that I find it hard to believe it will ever truly be removed in full

grim sparrow
#

The biggest reason to not use it on *OS is some of its calls are CPU rendered only. They stopped updating the GPU drivers for them

#

so OpenGL is kinda fucked on recent apple silicon

floral notch
#

can't you use ANGLE?

magic hazel
#

That is true, depreciated in this circumstance kind of translates to "we won't update it anymore"

grim sparrow
magic hazel
#

I am slightly confused at why though, Metal is much, much more low level than OpenGL is no?

#

So is Vulkan

floral notch
#

MoltenVK is a nightmare to vendor in my experience

grim sparrow
#

the overall point is that theres nothing that can universally replace OpenGL

#

because there hasn't been another universal lib

magic hazel
#

Yep

floral notch
#

that's ANGLE, i would argue

floral notch
#

target openGL ES 3.0 and ride on the back of google chrome

grim sparrow
#

I spoke with the graphics team at wwdc about this and straight up asked when they intended to remove it and they said they have no near plans

#

and that they aren't in the business of breaking it right now, but they're not putting any work into it

#

and their dirty fix is just offload a lot of it to cpu

magic hazel
#

Which in modern times is powerful enough

#

Especially to run the legacy code you'd be running

grim sparrow
#

Sucks when playing Minecraft with Shaders trol

magic hazel
grim sparrow
#

oh thats easy. its an incredible amount of dev work to just do metal

magic hazel
#

Yeah exactly

grim sparrow
#

where you can do opengl and hit most of your games userbase on Windows

#

the problem with metal is its so limited in terms of hardware, no game devs are actually going to use it

magic hazel
#

Purely because Metal is closed source and platform tied, why would you ever target it?

#

Exactly

grim sparrow
#

look at the steam hardware survey, macOS is 2% of Steam gamers. It's not a good econmincal move to go after that 2% when you could be putting your effort into the 98% and receive more gains

#

Metal was dead from day 1 and I wish they'd just give up and bring Vulkan

magic hazel
#

I mean yes and no, their own UI stack does run quite well with metal vs opengl

grim sparrow
#

Sure, but Apple is targeting 100% of the audience by doing that

#

internally its fine

magic hazel
#

But for games, it's over

#

It's just never going to catch on

#

Vulkan is the future for low level graphics programming and has been for nearly a decade

grim sparrow
#

Vulkans compatability from Wikipedia:

Android, Linux, BSD Unix, Windows, Nintendo Switch, Fuchsia, Raspberry Pi, vxWorks, QNX, HarmonyOS, OpenHarmony, Oniro, Haiku, Stadia, Tizen
Through portability workarounds: macOS, iOS

#

like, wtf apple

#

WHY

#

even the Nintendo Fucking Switch has it

magic hazel
#

EVERYTHING has Vulkan, it's nearly as ubiquitous as OpenGL, it still has to get the minor things like smaller, hobby cards, but then again, even the fucking Raspberry Pi has it

grim sparrow
#

the raspi isn't that big of a deal, its just a sbc running debian

magic hazel
grim sparrow
#

yeah

magic hazel
#

I wonder if Metal is actually slower than Vulkan

grim sparrow
#

impossible to measure

magic hazel
#

Indeed

#

Probably by design

grim sparrow
#

but I would honestly assume Vulkan is better because it has a lot more people backing it

magic hazel
#

True, true, but Metal may be better on Apple's systems. I don't know if they have done any special stuff under the hood to make it better

grim sparrow
#

Yeah

#

I know Vulkan has all the methods of Metal, but there are a lot of features in Vulkan that has no equivalent in Metal. This is mostly from companies wanting a feature and it being generally a lot easier to do that with Vulkan compared to Apple with Metal

magic hazel
#

true

grim sparrow
#

I would think Vulkan would perform better if you were on a team that knew how to make use of all of these neat optimisations

harsh junco
#

(In terms of memory)

magic hazel
#

lmao

magic hazel
#

It's awesome

gentle grove
copper sparrow
#

can i dump a private framework with frida?

hasty ruin
gentle grove
tepid nacelle
#

it works pretty well

harsh junco
grim sparrow
#

OR they should make it a system component

#

Not something every developer has to fight with

tepid nacelle
#

good luck

frank fossil
magic hazel
grim sparrow
#

Maybe they’re more receptive to just taking their L’s

magic hazel
#

Is it global

hasty ruin
#

I wanna see a battery comparison

magic hazel
#

I mean it’ll obviously be worse with it on but I guess it’s by how much

#

I’m actually totally shocked they added that option

grim sparrow
grim sparrow
#

I think MacRumours did it

hasty ruin
#

Okay well I want a comparison for if I were to update from Monterey 🧌

grim sparrow
#

Oh I saw a comparison between a bunch of versions

#

Tahoe is categorically the worst except on the M3 MBA

#

(Somehow)

zealous prism
#

I'm using cpp 17, no particular reason as such, should I upgrade to 21?

marble perch
grim sparrow
#

(legendary hayden sighting in chat)

#

I honestly haven't minded being on tahoe that much, a lot of the bugs people are whining about I've had on previous macOS versions so I don't think its fair to blame it on Tahoe, but it would be fair to blame it on poor management from Apples side

#

Putting all the engineering effort into useless AI rather than actually improving the core experience, but thats another story

#

my battery life has always been really shit on my macbooks, because all I do with them is programming, typically on quite large projects. Constantly recompiling and running tests just obliterates the battery. The only time the battery life is good is when I'm just watching stuff but I only do that when I'm next to a bunch of chargers

#

I definitely don't help my case for battery life