#development

1 messages · Page 181 of 1

faint stag
#

rather than just the process dying immediately

#

brother there's an entitlements list

faint timber
#

Proof you absolutely ain’t no developer

primal perch
#

least toxic development channel moment

primal perch
hexed knot
#

isis type beat

timid furnace
#

the screenshot is obviously a capability added in xcode

#

just check the entitlements file that xcode makes 😭

limpid pumice
wooden yarrow
hollow oar
#

12 years ago

wooden yarrow
#

💀

#

on the gpu it's like 70x

#

or more

placid kraken
#

this is the mindset i use when making my compiler

#

if it breaks, fuck you, you did it wrong

#

write saner code or something

harsh junco
#

Rustie

placid kraken
#

this

int add(int size, ...) {
    int res = 0;
    va_list ptr;
    va_start(ptr, size);
 
    for (int i = 0; i < size; i++)
        res += va_arg(ptr, int);
 
    va_end(ptr);
    return res;
}

int main() {
    int res = add(3, 2, 3, 4);
    printf("%d\n", res);
    return 0;
}
``` is really confusing
#

like i get it but

#

idk

#

there has to be some way to get the vaargs length without needing to specify at call time

hollow laurel
#

not really no

gentle grove
#

at that point just use an array

#

varargs honestly shouldn't even exist imo, unless there's something I'm missing

hollow laurel
hollow laurel
placid kraken
#

this is how i did it in elle

fn add(Int size, ...) {
    Int res = 0;
    Variadic args[size];

    for _ = 0 to size - 1 {
        res += args yield Int;
    }

    free(args);
    return res;
}

pub fn main() {
    Int res = add.(1, 2, 3, 4);
    printf!("%d\n", res);
    return 0;
}
#

i added a syntactic sugar macro type thing

#

add.(1,2,...)

#

which automatically inserts the arg length at the 0th index

#

how does printf infer the arg length

hollow laurel
#

using the %d, %c and stuff, based on the number of formats provided, it can inffer the expected amount of args and it will error, if the amount of args doesn't match

gentle grove
placid kraken
gentle grove
#

we shall go back to python where you pass in a "tuple" with the % replacement or whatever trol

placid kraken
#

because i cannot think of a better way to do it and passing the number of args manually feels so cheap

hollow laurel
hollow laurel
placid kraken
#

this part

 match self.current_token().kind {
    TokenKind::LeftParenthesis => {
        self.advance();
    }
    TokenKind::Not => {
        self.advance();

        if self.current_token().kind == TokenKind::IntegerLiteral {
            match self.current_token().value {
                ValueKind::Number(val) => {
                    variadic_index = val.to_string().parse::<usize>().unwrap();
                },
                _ => {}
            }

            self.advance();
        }

        self.expect_token(TokenKind::LeftParenthesis);
        self.advance();
    }
    TokenKind::Dot => {
        self.advance();
        calculate_variadic_size = true;

        self.expect_token(TokenKind::LeftParenthesis);
        self.advance();
    }
    other => panic!("Expected left parethesis or exclamation mark (for variadic functions) but got {:?}", other)
}
``` detects the dot
#

and then its done like this

if variadic {
    if calculate_variadic_size {
        parameters.insert(
            0,
            AstNode::LiteralStatement {
                kind: TokenKind::IntegerLiteral,
                value: ValueKind::Number(parameters.len() as i64),
            },
        );
    }

    parameters.insert(
        variadic_index,
        AstNode::LiteralStatement {
            kind: TokenKind::ExactLiteral,
            value: ValueKind::String("...".to_owned()),
        },
    );
}
#

after the parameters are all parsed and stored in the vector

#

so essentially

func.(a, b, c, d);

will expand to

func(4, ..., a, b, c, d);
#

ignore the ... thats a whole other story

hollow laurel
#

what are you even cooking? (just noticed the code is in rust lmao ...I was like "this looks very farmiliar, but it ain't C nor python")

#

looks reasonable enough

placid kraken
#

well, not trying

#

i did add variadic arguments

#

im just inspecting the most ergonomic syntax for it

placid kraken
#
  • the variadic call first allocates memory with malloc of the size, then calls vastart on that ptr returned by malloc,
  • args yield Int essentially gets the next vaarg as an int type
  • needs to be freed at the end ofc because no memory leaks
  • the Int res = add.(1, 2, 3, 4); part uses the macro i talked about earlier
#

and thats basically how it works

#

the add function looks like this in the IR

function w $add(w %size.1, ...) {
@start
    %res.2 =w copy 0
    %args.3 =l call $malloc(w %size.1)
    vastart %args.3
    %_.4 =w copy 0
@loop.5.cond
    %tmp.6 =w copy %size.1
    %tmp.7 =w copy 1
    %tmp.8 =w sub %tmp.6, %tmp.7
    %tmp.9 =w copy %_.4
    %tmp.10 =w copy %tmp.8
    %tmp.11 =w cslew %tmp.9, %tmp.10
    jnz %tmp.11, @loop.5.body, @loop.5.end
@loop.5.body
    %tmp.12 =w vaarg %args.3
    %tmp.13 =w copy %res.2
    %tmp.14 =w copy %tmp.12
    %tmp.15 =w add %tmp.13, %tmp.14
    %res.2 =w copy %tmp.15
    %tmp.16 =w copy %_.4
    %tmp.17 =w copy 1
    %tmp.18 =w add %tmp.16, %tmp.17
    %_.4 =w copy %tmp.18
    jmp @loop.5.cond
@loop.5.end
    %tmp.19 =w call $free(l %args.3)
    %r.v19.20 =w copy %res.2
    ret %r.v19.20
}
#

and then yeah the main function

export function w $main() {
@start
    %tmp.22 =w call $add(w 4, ..., w 1, w 2, w 3, w 4)
    %res.21 =w copy %tmp.22
    %tmp.24 =w call $printf(l $main.23, ..., w %res.21)
    %r.v24.25 =w copy 0
    ret %r.v24.25
}
data $main.23 = { b "%d\n", b 0 }
#

expands like i said

sacred orbit
placid kraken
#

i just implemented floating point numbers first try wtf

#
pub fn main() {
    Double a = -1.2;
    Double b = 123.456;
    Double c = a / b;
    printf!("%f\n", c);

    return 0;
}
#

it parses the floating point number as a string, then splits on the .

#

then it gets the length of the part after the .

#

then it concatenates the part before and after the . without any dot, so as an integer

#

then it divides this by 10 ^ (the length of the second part)

#

and then it parses them both as integers

#

its surprisingly extremely simple

fn parse_float(&mut self, token: Token) -> AstNode {
    let value = match token.value {
        ValueKind::String(val) => val,
        _ => todo!(),
    };

    if !value.contains(".") {
        panic!("Invalid float literal provided");
    }

    let nodes: Vec<&str> = value.split('.').collect();
    let left = nodes[0];
    let right = nodes[1];

    let exponent = right.len();
    let original = String::from_iter([left, right]).parse::<i64>().unwrap();

    AstNode::ArithmeticOperation {
        left: Box::new(AstNode::LiteralStatement {
            kind: TokenKind::IntegerLiteral,
            value: ValueKind::Number(original),
        }),
        right: Box::new(AstNode::LiteralStatement {
            kind: TokenKind::IntegerLiteral,
            value: ValueKind::Number(10_i64.pow(exponent as u32)),
        }),
        operator: TokenKind::Divide,
    }
}
#

literally no testing i just had a theory that this would work and it did

#

i was expecting to be stuck for hours trying to get this to work

radiant idol
#

meanwhile me today

placid kraken
#

theres so many keywords now lmao

radiant idol
# radiant idol meanwhile me today

in the Theos server we were trying to use Sileo's classes without actually linking against Sileo - turns out because they don't have them markd as public, that's impossible

placid kraken
#

just reimplement sileo's classes

radiant idol
#

that actually works, to an extent

#

but obviously you can't do that for everything

placid kraken
#

yeah fair

radiant idol
#

also

#

SwiftOptional

#

turns out optionals are inlined in memory

radiant idol
#

no

placid kraken
#

step size officially implemented (real)

pub fn main() {
    for Double i = 0 to 1.5 step 0.5 {
        printf!("%f\n", i);
    }

    return 0;
}
radiant idol
slim bramble
#

Pub doesn’t mean anything please choose the right path 🙏

#

Also not sure if you can even do that, but if you can fix float numbers that would be great lol

placid kraken
placid kraken
slim bramble
radiant idol
#
public func main() -> Int {
    for Double i = 0 to 1.5 step 0.5 {
        printf!("%f\n", i);
    }

    return 0;
}
slim bramble
#

pub doesn’t mean shit

radiant idol
#

I just made Swift... didn't I

placid kraken
#

nightwind i want input from you

slim bramble
#

public is clear can be understood by anyone

placid kraken
#

on how variadic arguments should work

radiant idol
#

I told you

#

!

placid kraken
#

this is how they work currently

fn add(Int size, ...) {
    Int res = 0;
    Variadic args[size];

    for _ = 0 to size - 1 {
        res += args yield Int;
    }

    free(args);
    return res;
}

pub fn main() {
    Int res = add.(1, 2, 3, 4);
    printf!("%d\n", res);
    return 0;
}
#

no

#

not that

radiant idol
#

o

slim bramble
#

Not fn wtf

#

Just pull a java or something close to c

radiant idol
#

I don't get yield

slim bramble
#

What you do is too close to rust and doesn’t mean anything

placid kraken
placid kraken
placid kraken
#

its just abbreviations

#

fn -> function
pub -> public

slim bramble
placid kraken
radiant idol
#

that's much simpler

placid kraken
slim bramble
placid kraken
#

horror

placid kraken
radiant idol
#

why the .

placid kraken
#

which automatically inserts the $...$ AND puts the argument length at the 0th index

radiant idol
#

looks weird

placid kraken
#

instead of just putting $...$ like with !

placid kraken
#

i could do $

radiant idol
#

no

placid kraken
#

but thats probably worse

radiant idol
#

that looks weird

placid kraken
#

i also tried *

radiant idol
#

hmmm

placid kraken
#

looks weird

#

looks like a multiplication

#

func.(a, b) is the best i could come up with but im open to suggestions

#

it feels very cheap in C where you need to specify how many arguments you passed manually

#

you could do that here too and use !

#

func!(2, a, b)

#

but func.(a, b) adds the arglength there automatically

radiant idol
#

func#(a,b)

#

hmmm

#

no

placid kraken
#

what if

#

i reversed the orders

radiant idol
#

wut

placid kraken
#

func!(a, b) does both arglength and $...$

#

and then func.(a, b) does just $..$

radiant idol
#

no

#

that's confusing

placid kraken
#

true

radiant idol
#

man idk

placid kraken
#

the . feels ALMOST right

radiant idol
#

but it isn't

placid kraken
#

omg i figured it out

radiant idol
#

o no

placid kraken
#
func,(a, b)
radiant idol
#

please no

placid kraken
#
func*/+-(a, b)
#

perfect

radiant idol
#

func[](a, b)

#

trol

placid kraken
#

not bad but feels like an array access

slim bramble
gentle grove
slim bramble
#

Stop doing goofy stuff

placid kraken
#

and yield doesnt always mean that anyway

radiant idol
#

use_size::func(a, b)

#

idk anymore

placid kraken
#

in javascript yield returns the next value from a lazy generator

#

in elle its similar

#

yield returns the next variadic argument from memory

gentle grove
#

like from a conceptual standpoint

placid kraken
#

uhhh i suppose yes

gentle grove
#

let me brush up on my defitinons

#

i am rusty

#

because i only use rust recently

placid kraken
radiant idol
#

func!#(a, b)

placid kraken
#

actually

#

you have a point-ish

radiant idol
#

I've lost my mind

placid kraken
#

! = $...$
.# = number = argument length

#

however

gentle grove
#

what

#

yoiu are crazy

radiant idol
#

rosie's code is insane

placid kraken
#

blame the IR

#

it will be like this until i implement C intefacing

gentle grove
#

i hate infrared /s

placid kraken
#

so i can insert the ... at the right place at compile time instead of needing to specify at call time

radiant idol
#

so

#

either

#
func!#(a, b)

or

func#!(a, b)
placid kraken
#

both of those would be painful if you have to call the function often tho

#

thats why i put it as . because its very easy and fast to type

radiant idol
#

func!.(a, b)

#

I don't like it

placid kraken
gentle grove
#

what does it even do

#

is that how you do signature for variadic function

radiant idol
#

rosie's just being weird

#

func!(a, b) normal variadic

placid kraken
# gentle grove what does it even do

automatically inserts the argument length at the 0th index of a variadic function

so instead of func!(2, a, b) you can do func.(a, b) and itll achieve the same effect

radiant idol
#

func???(a, b) for variadic where the first arg is the amount of args

gentle grove
#

oh wtf you hav eto pass ijn the argument count?

radiant idol
#

wait

#

what if you have something like NSLog

placid kraken
#

its the exact same in C

radiant idol
#
void NSLog(NSString *_Nonnull format, ...);
#

how would you express that

gentle grove
#

i write normal person functions in C

#

never variadic

placid kraken
#

NSLog, printf, etc

radiant idol
placid kraken
#

theres no string replacing utility methods yet lmao

#

theres like barely any utility methods at all

#

i wonder if donut.c would compile now

radiant idol
#

why did I write _Nonnull here

placid kraken
#

lmaoo i was confused too

radiant idol
#

I mean it's valid in ObjC

#

and better technically since it's more clear

#

but

gentle grove
#

idk what i was thinking of'

proud geyser
#

the view only updates when app goes into background activity

#

anyone know whats causing the issue?

acoustic imp
#

does luno (legizmo dev) not provide support ?

tepid olive
#

how to statically list all objc methods from a specific objc class
for example using the command nm or otool
I couldnt manage to do that yet

acoustic imp
#

the search takes a moment so be patient

gentle grove
#

I just took another look at gleam, the syntax

#

Boy did they copy rust's homework

#

the keywords, function declarations, the text output from their package manager and compiler errors

#

Not that that's a good or bad thing

granite frigate
#

gleam doesn't have for loops

#

man

granite frigate
#

ok we up nice

#

god bless

placid kraken
# gentle grove it is not

to be fair you can create asynchrony via a generator, and it’s sometimes used in polyfills where the promise api doesn’t exist

#

but generators aren’t async in nature

placid kraken
#

i tried a few months ago and couldn’t figure it out

gentle grove
#

Idk I just read the documentation to sound smart

#

I'll try it sometime later if I have time

#

I need some more functional programming in my life

wooden yarrow
#

prob need to add that into the stdlib using erlang/javscript

placid kraken
#

meanwhile

fn c_strlen(Pointer buf) -> Long {
    Long res = strlen(buf);
    return res;
}

fn input(String message) -> String {
    Long stdin = fdopen(0, "r");
    Char buf[256];

    printf(message);
    fgets(buf, 256, stdin);
    buf[c_strlen(buf) - 1] = '\0';

    fflush(stdin);

    String result = malloc(c_strlen(buf) + 1);
    strcpy(result, buf);

    return result;
}
reef trail
#

how tf have you got malloc in rust

placid kraken
#

it’s not rust

reef trail
#

oh its your lang?

#

the syntax looks identical

placid kraken
#

yeah i like how rust syntax looks

reef trail
#

same, last time i saw your lang you had some weird keywords

placid kraken
#

expose op main

#

trolley

placid kraken
#

this might be what you’re looking for

placid coral
acoustic imp
brazen timber
warped sparrow
#

@placid kraken flora is randomly crashing healthappd? 😭

placid kraken
#

i still need to disable flora in system processes lmao

warped sparrow
#

Cr4shed is so useful wtf

warped sparrow
#

its probably impacting on performance and battery life

placid kraken
#

flora or cr4shed

warped sparrow
#

That it doesn't need to

#

seeing that healthappd crashes and it has to start up again probably does cause battery and performance issues right?

#

Depending on how much it happens

placid kraken
#

i mean i guess yeah

warped sparrow
#

This is the first time it's happened though

placid kraken
#

i have a filter for UIKit only but the tweak still does whatever it wants

#

which means i need to filter what it injects into at runtime in the constructor too

#

i know how to do it i just haven’t gotten around to it yet

warped sparrow
#

Also for some reason snowboard fonts has been crashing my carrot weather widget every 2 minutes 💀

warped sparrow
slim bramble
#

Or was cr4shed update for 15 ?

serene hawk
warped sparrow
#

And the unofficial version uses that new xpcbootstrap thing instead of rocketbootstrap :D

placid kraken
#

i remembered i need to make a defer keyword

#

defer to free allocated memory would be useful because it would be an easy way to make an in-place unique ptr

#

the defer would wrap another ast node and would simply be held in limbo until the whole function is parsed and then added at the very end of the vector of nodes

wooden yarrow
placid kraken
#

no

wooden yarrow
#

then you prob shouldnt introduce keywords like that

#

trol

placid kraken
#

however if you do

Pointer a = malloc(1024);
defer free(a);
#

it wouldn’t hurt to have this in the language

radiant idol
#

oh no

#

std::unique_ptr vibes

wooden yarrow
#

we're getting (C++)++

#

🔥

#

c++.rs

placid kraken
#

it would act the same as manually freeing at the bottom just it’s now grouped together

radiant idol
#

disgusting

#

do better

placid kraken
#

i wouldn’t introduce an actual unique ptr because if i’m completely honest i have no idea how to implement classes

wooden yarrow
#

i guess it would be fine if no one uses the lang

fading shell
placid kraken
placid kraken
wooden yarrow
#

hm only you

#

continue

#

wait actually @placid kraken i just realized you're literally making Zig 2

#

lmao

placid kraken
#

i realized this too lmao

#

not quite zig 2 maybe zig 0.5

#

the same level of memory management though

placid kraken
#

but i got a lot further than i expected

wooden yarrow
#

cool

placid kraken
#

like a lot further

#

so it’s become something i can actually use to solve basic problems

wooden yarrow
slender glade
placid kraken
#

it’s a different compiler backend but similar idea

wooden yarrow
placid kraken
#

originally i wanted to compile to beam bytecode

#

like the thing erlang uses

#

then i realized that’s a horrible idea

placid kraken
#

at least now it’s usable for most things

#

i NEED modules

#

that opens up the door to so many new things

drifting heron
#

@placid kraken rosieee

#

hope you’re doing well

#

how did your exams go? hap

placid kraken
#

i’m only halfway done with them lol

#

i’m currently on a week holiday

#

i’m done on the 19th june

#

3 days after my birthday 🥲

drifting heron
#

ohh

#

dang

#

well gl as always

placid kraken
#

tyyy

drifting heron
#

excited for new flora update hap

native dune
#

nice guild name

#

AHHH

drifting heron
#

might donate something if possible

drifting heron
native dune
#

i cant wait for my server to get guilds

drifting heron
#

I think it’ll take like 1-2 more months for full rollout

#

I don’t think there’s been any new servers getting access

placid kraken
#

defer done

#
fn what_is_x(Double x) {
    printf!("x = %f\n", x);
}

pub fn main() {
    Double x = 0.1;
    Defer what_is_x(x); // were expecting this to print 0.3

    x += 0.2;
    return 0;
}
fading shell
placid kraken
#

you can also defer inside blocks like if statements and while loops

#

it was slightly annoying to code because i had to fight the refcell api and i had to account for return so i couldnt directly place it at the end of the node vec

#

one issue ive encountered is if you do something like this

fn test(Int a) {
    printf!("%d\n", a);
}

pub fn main() {
    Int a = 1;
    Defer test(a);

    if (true) {
        a++;
        return 0;
    } else {
        a--;
    }
}
``` the defer will never fire
#

i have an idea

#

what if i call the deferrer right before every return statement

#

instead of just looking for the very last one

placid kraken
#

ok i did it with this horror

#

it automatically runs all of the defers either before any return statement or just at the end of the function if you dont return anything

#

this code

fn test(Int a) {
    printf!("%d\n", a);
}

fn c() {
    puts("c");
}

pub fn main() {
    Int a = 1;
    Defer test(a);
    Defer c();

    if (true) {
        a++;
        return 0;
    } else {
        a--;
    }
}
#

compiles to

function w $test(w %a.1) {
@start
    %tmp.3 =w call $printf(l $test.2, ..., w %a.1)
    ret
}
function w $c() {
@start
    %tmp.5 =w call $puts(l $c.4)
    ret
}
export function w $main() {
@start
    %a.6 =w copy 1
    jnz 1, @ift.7, @iff.7
@ift.7
    %tmp.8 =w copy %a.6
    %tmp.9 =w copy 1
    %tmp.10 =w add %tmp.8, %tmp.9
    %a.6 =w copy %tmp.10
    %tmp.11 =w call $test(w %a.6)
    %tmp.12 =w call $c()
    %r.v12.13 =w copy 0
    ret %r.v12.13
@iff.7
    %tmp.14 =w copy %a.6
    %tmp.15 =w copy 1
    %tmp.16 =w sub %tmp.14, %tmp.15
    %a.6 =w copy %tmp.16
@end.7
    %tmp.17 =w call $test(w %a.6)
    %tmp.18 =w call $c()
    ret
}
data $test.2 = { b "%d\n", b 0 }
data $c.4 = { b "c", b 0 }
fading shell
#

what does defer even do

placid kraken
#

you see how the call of test and c is there both before the ret %r.v12.13 and before the ret at the end of the function

placid kraken
#

its like a destructor-ish

fading shell
#

ah nice

placid kraken
#

it only calls the function when youre about to return

#

its intended purpose is to group together malloc and free calls

#

but it can be used for anything

#

apparently everyone is using rust syntax now

acoustic imp
#

Does cr4shed hook C functions?

serene hawk
acoustic imp
#

K, bc I’ve gotten like 10 spin locks today

#

And I usually get none

serene hawk
#

yeah well if you installed cr4shed-rootless today that’s most likely the cause ig

#

can also imagine this function getting called quite often

acoustic imp
#

Yea

hasty ruin
#

ios 15

kind herald
vivid dew
#

sorry, but i'm sentencing you to death for posting cringe

kind herald
tepid olive
#

Image4: Invalid security mode\n
68a64239691e40b9 + 0x14

patch 1 = -0x14 = 0x52800008; // mov w8, 0x0
patch 2 = -0x10 = 0x52800009; // mov w9, 0x0
Image4: Invalid board id\n
689a40b9690a40b9 + 0x14
patch 1 = -0x14 = 0x52800008; // mov w8, 0x0
patch 2 = -0x10 = 0x52800009; // mov w9, 0x0
both for ios 11.3-13.7
ios 13 downgrade patches
vm_fault_enter ✅

ios 13 img4 validation patches
Img4DecodePerformTrustEvaluatation ✅
Image4: Payload hash check failed ✅
Image4: Invalid security domain. ✅
Image4: Invalid chip id ✅
Image4: Invalid security mode ✅
Image4: Invalid board id ✅
Image4: Invalid production status ✅
Image4: Invalid epoch. ✅
Image4: Invalid ecid ✅

steady nest
#

img4 patches are universal

#

just patch the adr x2, xxxx
nop to mov x0, #0 ret

#

it’s unique in every version I’ve seen

gentle grove
placid kraken
#

the one time when compile time arithmetic simplification is a negative operation

gentle grove
#

when the compiler optimizations change the behavior of the program

#

when you remember you're using C and you actually just realize you accidentally made UB

placid kraken
#

in theory the "compiler optimization" should cause the same behavior

gentle grove
#

correct

placid kraken
#

but i suppose writing 0.30000000000000004 in the machine code as the result of 0.1 + 0.2 wouldnt be the best idea either

gentle grove
#

well i dont think you can write 0.3 in the machine code

#

but if youre doing math entirely at compile time, then you can imagine 0.3 existing

#

that's how i understood the post, maybe they do represent it somehow

placid kraken
#

i got blocks working

fn print(Int a) {
    printf!("[omg] %d\n", a);
}

pub fn main() {
    Int a = 1;
    {
        Defer print(a);

        for _ = 0 to 8 {
            a *= 2;
        }
    }

    print(5);
    return 0;
}
#

this is becoming worse and worse

#

deferrers that arent in the root wont be deferred on any return statement theyll only be deferred when the current block is about to leave scope

placid kraken
#

its not an error its more an implementation detail lol

gentle grove
#

give me a second to process that sentence

gentle grove
placid kraken
# gentle grove give me a second to process that sentence
pub fn main() {
    Int a = 1;
    {
        Defer print(a);

        for _ = 0 to 8 {
            a *= 2;
        }
        // will call print(a) here
    }

    print(5);
    return 0;
}
pub fn main() {
    Int a = 1;
    Defer print(a);

    if (a > 5) {
        // will call print(a) here
        return 1;
    }

    print(5);
    // will call print(a) here
    return 0;
}
#

not exactly

#

calling the deferred function on any return statement wont make sense if it wasnt created in the root

gentle grove
placid kraken
#

the function is about to go out of scope

gentle grove
#

oh yeah

placid kraken
#

you cant determine at compile time which branch the function will take

gentle grove
#

i thought you were saying that print("a") would never be called in something like this

pub fn main() {
    {
        Defer print("a");
    }
    return 0;
}
placid kraken
placid kraken
gentle grove
#

okay that's right then

placid kraken
#

ok cool

reef trail
#

imo things like defer shouldn’t be used as they create hidden control flow

placid kraken
#

its only “intended” usecase is to group memory alloc and dealloc

#

everything else that i’ve shown is as an example to make sure it’s working

#

but realistically defer shouldn’t be actually used if it’s not for memory dealloc, i agree

reef trail
#

rust doesn’t have defer tho?

#

well it does but not that type of defer

slim bramble
#

?

reef trail
#

yeah i write in rust quite often

slim bramble
reef trail
#

wdym reversed

#

reverse engineering it would be painful lol

slim bramble
#

That's what I'm saying

#

rust's control flow is cursed

reef trail
#

not what i meant

#

i meant more from a reading / writing perspective

fading shell
reef trail
#

umm ok?

#

zig has loads of other issues too tho

fading shell
#

idk about that

#

i just saw some zig code

slim bramble
#

zig fr

fading shell
#

where they used defer in that way

placid kraken
#

thankfully in elle the deferring is only a parsing-time operation

#

all defers are compiled into just placing the statement at the bottom, so if you were to reverse engineer the binary it would be the same as if you simply placed that line of code at the bottom, right before a return statement

#

i don’t know how zig does it but hopefully it’s also compile time

placid kraken
#

if it was hidden control flow it would place the line at the bottom and not tell you

placid kraken
#

zig frcoal

wooden yarrow
placid kraken
#

elle more like

pale meteor
#

Irrelevant, how do I extract a free app's ipa to backport compatibility? or is that counted against the piracy rule

placid kraken
#

i didnt think of it that way actually

pale meteor
long valve
#

Hey, I work for a social media agency and we're looking for some tweaks to make our job more efficient so that we dont have to buy 100s of phones.
We're looking for:

  • A crane extension which is able to change the gps location and proxy per container
  • A tool which allows us to load images from the library to the camera to post on snapchat, tiktok etc
  • A network analyzer to fetch auth codes so we can access our accounts from the web versions
  • A reverse engineering of the account setup api for some social media apps so we can create accounts off device

Prices are negotiable but we're looking to spend around $300-500 per tweak with support

Anyone interested please leave a dm 🙂

placid kraken
#

you see

#

a benefit of it being open source

#

lmfaoooo

steady nest
#

oh no

#

he's here

placid kraken
#

who

steady nest
#

him.

placid kraken
#

im pretty sure they mean they want to post videos from their camera roll directly as snaps which snapchat doesnt let you do

#

but yeah for tiktok just upload from camera roll lmao

reef trail
#

snap doesnt let you

placid kraken
#

it sends the video as some weird attachment thing instead of a snap

#

ok on story sure

#

but not directly to other people

reef trail
#

not when you go to snap someone tho

placid kraken
#

i would make it if i wasnt scared of my snapchat being banned after the havoc when iota died lmao

#

and if i used snapchat enough*

#

idk tbh

#

im a proud < 1000 snapscore user

#

what about discord

slim bramble
placid kraken
#

real,,,,

#

ok thats fair

fading shell
#

Twitter is good

placid kraken
#

whats an xnu commit

#

big commits look like this when i write them

fading shell
#

that's what makes it funny

placid kraken
#

the commit title is Read full commit then i list all the changes in the description

#

at least its not threads where its all christians and transphobes screaming about whatever

#

half my feed is

WE DO NOT LIKE TRANS PEOPLE

copy pasted 25 times lmfao

#

idk which one is worse but i logged onto threads once in a blue moon and decided to uninstall it when i did

#

it was hastily created as a replacement for twitter as they were assuming that twiter will die after elon bought it

#

its very rushed

#

based
@slim bramble choose your words wisely

placid kraken
#

wait really

#

why do i keep getting 1984d then when i post :3 stuff

#

im not the best person to ask

#

this channel and #themes are the only channels i talk in

#

i dont have anything to compare to

faint stag
#

i think they know crane has nothing to do with location services fr
they want something that can change location based on container
as in, something that works with crane
i know you're dense but not that dense

slim bramble
#

based

faint stag
#

capt...

#

crane lets you have more than one container per app

#

they just want a tweak that also changes it's settings PER container

#

???

#

man

slim bramble
#

I thought you weren't dense 😭

faint stag
#

you're missing the point

#

they want a tweak

#

they want a tweak that works alongside crane

#

different location for each container

#

what does the bundle filter have to do with containers...

#

bundle ids are unique to the app/executable

#

not the container

#

container is user data

placid kraken
#

let me open Microsoft™️ visual studio code on my Microsoft™️ windows machine and write some Microsoft™️ typescript code which required some Microsoft™️ npm packages to push to Microsoft™️ github which deploys to Microsoft™️ azure

faint stag
placid kraken
faint stag
#

that is an IDE

#

it uses LLVM

placid kraken
#

which runs on the Microsoft™️ dotnet framework

#

does llvm stand for low level virtual machine

torn oriole
#

I wanna kill llvm with hammers

faint stag
#

clang it

torn oriole
#

Yes

#

Clang llvm with hammers

placid kraken
#

gcc = go clang (llvm) (you) c (user)

#

if its a project name it can still be an acronym lmfao

hasty ruin
#

?

faint stag
#

llvm started doing a lot more so the acronym didn't stick

long valve
#

bro we want

  • the snaps from gallery to look like real snaps (not images posted from gallery)
  • the tiktok livestream to be a video from gallery

both of that is not possible out of the box

hasty ruin
#

Wait this is development

placid kraken
hasty ruin
#

I can delete harmful messages

placid kraken
#

1985

hasty ruin
#

It’s not even me anymore lmao

fading shell
# placid kraken does llvm stand for low level virtual machine

The name LLVM was originally an initialism for Low Level Virtual Machine. However, the LLVM project evolved into an umbrella project that has little relationship to what most current developers think of as a virtual machine. This made the initialism "confusing" and "inappropriate", and since 2011 LLVM is "officially no longer an acronym",[20] but a brand that applies to the LLVM umbrella project.
https://en.wikipedia.org/wiki/LLVM

LLVM is a set of compiler and toolchain technologies that can be used to develop a frontend for any programming language and a backend for any instruction set architecture. LLVM is designed around a language-independent intermediate representation (IR) that serves as a portable, high-level assembly language that can be optimized with a variety o...

placid kraken
#

when the llvm language reference page is this long you can kinda tell it expanded to be a bit more than a low level virtual machine

#

oh such as?

fading shell
#

:/

placid kraken
#

fair enough lol

young meteor
slender glade
placid kraken
#

are you expected to write in valid ssa form when you write code in llvm ir?

#

how tf do self hosted languages work

#

i know

#

but how does that even work

faint stag
#

using another language

#

duh

placid kraken
#

like how does one compile the compiler using the compiler without using the compiled compiler that was compiled first

faint stag
#

after re-implementing in the lang of course

placid kraken
#

so like say i wrote a brainfuck compiler

#

how would i write a brainfuck compiler in brainfuck and then run my brainfuck code in that compiler

#

would i need to run it twice

#

first to build the compiler in brainfuck using another language

#

then compile the brainfuck code using that second compiler

faint stag
#

well the concept of brainfuck is simple, it's just far from human readable
that's just manipulating memory addresses
so cross compiling is trivial tbh

placid kraken
#

oh this is interesting

torn oriole
#

written in brainfuck

placid kraken
#

theres frontends in multiple languages it seems

faint stag
#

those are just extra utils tho

torn oriole
slim bramble
torn oriole
#

Idk how good of an idea that would be

slim bramble
gentle grove
placid kraken
cloud yacht
hexed knot
reef trail
#

i thought 20k was low

fading shell
#

Idk what mine is

#

1045

native dune
#

mine is like 5000

reef trail
#

yeah but you’re all ancient

#

you shouldn’t even have the app

native dune
#

i've had the app for like a year

#

and no im a Kid

fading shell
#

Im only 3 years older than you

hexed knot
native dune
#

idr how long i;ve had it for

#

over a year i think my longest streak is like 450 days

fading shell
reef trail
#

rune dev api when

reef trail
fading shell
#

Not 2010s

reef trail
#

indeed

fading shell
#

Close

reef trail
#

1 year

fading shell
#

2009, Right?

reef trail
#

yeah

fading shell
#

I don’t trust myself rn

#

Too tired

#

That’s crazy

reef trail
#

i’m not tired at all KEKW

fading shell
#

Well I had school this week

reef trail
#

i’ve been up till like 4am every day this week

#

i could probably skip sleep tn

fading shell
#

Treat sleep like leg day, skip it if you don’t feel like it

reef trail
#

fr

#

i hate doing legs so much

#

arms on top

gentle grove
reef trail
#

i do them

#

but don’t enjoy it

#

unless it’s calves

#

love doing calves

gentle grove
hasty ruin
#

(the update is done i just need to write docs)

radiant idol
#

he keeps "forgetting" them every version

reef trail
reef trail
radiant idol
#

g00d

fading shell
reef trail
fading shell
reef trail
#

yep

hasty ruin
radiant idol
#

good

placid kraken
#

i turn 16 in like half a month !!!!!!!!

slender glade
wooden yarrow
#

16 year old doing a cute little project like.... making her own language

#

💀

slender glade
#

😭

reef trail
#

studying calculus at 15?

#

or do you mean studying it in your free time

orchid fulcrum
#

Why would anybody study calculus willingly troll

placid kraken
#

i already finished ap calculus bc i’m currently doing multivariable

placid kraken
wooden yarrow
#

youtube goated for that ngl

placid kraken
orchid fulcrum
#

Our proff used to say calc2 was 4 times harder than calc1 but my grade was better in calc2 lol

orchid fulcrum
reef trail
wooden yarrow
#

tr

placid kraken
#

lol yeah that too

reef trail
wooden yarrow
#

wtf

#

constantly??

reef trail
#

pretty much

wooden yarrow
#

damn

placid kraken
#

after these exams i’ll have no more until the start of june 2025 when i can potentially take my a levels if i’m ready

#

or june 2026 if i decide to take them in yr13 instead

reef trail
#

i had media & ict in january, english coursework up until like march. 2 english exams start of may and have 3 science exams in like 2 weeks

wooden yarrow
#

😭

placid kraken
#

horror

reef trail
placid kraken
reef trail
#

so you did english literature and english language in the same year? that sounds painful

placid kraken
#

yeah i had all of them in the past few weeks

#

i still have yet to do english language paper 2

#

that’s after half term

reef trail
#

surely you have more exams than me then if they’re all in one year?

placid kraken
#

yeah there’s about 25 papers in total i think

#

idk if that’s more or less than you

reef trail
#

sounds about the same?

#

but mines spread out over 2 years

placid kraken
#

i would take that over this 😭

#

technically this week i should be revising

reef trail
#

same tbh

placid kraken
#

but i’m working on elle because why not

reef trail
placid kraken
#

my exams have been really easy so far

placid kraken
reef trail
fading shell
reef trail
placid kraken
#

istg i’ve heard this same sentence like 1 million times

slender glade
#

that's why

#

lol

placid kraken
clear iron
fading shell
#

Everyone does

sick crane
clear iron
sick crane
#

haiiiiii

#

long time no seee

placid kraken
#

yeah c:

wooden yarrow
placid kraken
#

idk that sentence makes no sense

sick crane
#

im trying to run ramdisk on my iphone x but it doesnt quite work lol

slender glade
wooden yarrow
#

oh you just mean the topic of calc

placid kraken
#

i think so

wooden yarrow
#

understandable

slender glade
#

@wooden yarrow @placid kraken yeah like I just finished 12th grade and she was taking more advanced calc than I was, and I was literally placed in an advanced class lol

slender glade
wooden yarrow
#

i think i learnt taylor series in 12th grade

#

atleast maclaurin series

slender glade
#

we didn't lol

wooden yarrow
#

wtf

slender glade
#

our last topics were riemann and darboux integrals

#

then we tapped out

wooden yarrow
#

??

wooden yarrow
#

trol

slender glade
#

idk dawg

slender glade
wooden yarrow
#

😭

#

taylor series are like

#

actually cool

#

though doesn't apply to many functions

placid kraken
#

this is what i was doing most recently

#

and tangent planes

wooden yarrow
#

.

slender glade
slender glade
placid kraken
wooden yarrow
#

@placid kraken are you sure you're 15

placid kraken
slender glade
#

i was taking "graph the function" at 15 lol

placid kraken
#

unless my birth year changed from 2008 without me realising

slender glade
#

but props on you for that

#

!!

wooden yarrow
#

@placid kraken what if u did a math major in uni

#

:3

placid kraken
#

still relatively easy

placid kraken
wooden yarrow
#

W

placid kraken
#

i want to major in pure maths and minor in computer science

clear iron
#

That's wild

wooden yarrow
#

minor in computer science is crazy tho for someone who literally made their own lang

brazen timber
#

still havent met a pure math major that wasnt a masochist

wooden yarrow
#

😭

placid kraken
#

i can learn all of that stuff myself

wooden yarrow
#

i mean theoretically you could also learn the pure maths yourself

#

but

placid kraken
#

true,,,

#

for the most part i did

#

but if i major in it i have the opportunity to ask my professor questions that i wouldnt be able to do otherwise

#

at least i think thats how that works??

granite frigate
#

god how are people such geniuses

#

do you just learn math for fun wtf

placid kraken
granite frigate
#

wtf

#

insane

#

not you i mean like

#

people learn math for fun

#

wtf

orchid fulcrum
#

Math is NOT fun bruhhm

granite frigate
#

i already struggle with basic integration

#

not even ibp

#

then we got mfs doing math without numbers

#

man

placid kraken
sonic totem
#

Oh by parts

placid kraken
#

ok this is a bit of an abstract example but you get the point

sonic totem
#

Thankfully we are not meant to know how to integrate ln(x)

placid kraken
#

i mean its not that hard if you know how to integrate by parts

sonic totem
#

Oh yea

#

I just actually read it

#

I thought the whole thing was about integrating ln(x)

placid kraken
#

the top part is simplifying the weird integral with the differential in the exponent lmfao

placid kraken
#

essentially when you have some integral of f(x) * g(x) dx

#

you can write it as a table like this

#

then you integrate one and differentiate the other until you get to a point where you can stop

#

after which point you multiply each diagonal and then you multiply the last row together and integrate that whole expression

#

like this

granite frigate
placid kraken
#

its kinda hard to explain through text lmfao

granite frigate
#

ima be real idk what you’re talking about

placid kraken
granite frigate
#

okay

#

oh bprp my goat

#

🙏

placid kraken
#

ikrrr

orchid fulcrum
#

How else can somebody solve those though

#

There are probably other methods

placid kraken
#

oh

orchid fulcrum
#

I was talking about this too rip. Should have watched the video i thought it was the same when i saw v and du 💀

placid kraken
#

the DI method essentially lets you do that just multiple times in rapid succession

#

and its easier to understand if you know the method

#

unfortunately most exam boards dont accept this as valid working so youll need to know the formula anyway

slender glade
lyric heron
wooden yarrow
#

basically learnt my calculus from him

#

goated

placid kraken
#

unfortunately he doesnt have very much content on multivariable calc

#

but yeah for single variable his content is amazing

wooden yarrow
#

trol

placid kraken
#

3b1b are more education videos about a range of topics than just mvcalc

#

i watch him too those videos are interesting

wooden yarrow
#

yeah true but idt I would have understood his content w/o bprp

#

trol

placid kraken
#

fair enough

wooden yarrow
granite frigate
#

why do you find math fun

#

like genuinely

wooden yarrow
#

math is fun it's just usually not taught to be fun

granite frigate
#

i don’t hate it but idc to learn about it past what i need

placid kraken
wooden yarrow
#

ah

#

is khan academy goated

placid kraken
#

explode

placid kraken
slender glade
#

doggystyle

placid kraken
#

uhhhhhh

#

this stuff is also horror

#

im almost at this point and im scared of it

slender glade
#

oh this is easy

#

image didn't load btw

#

wow. nvm.

placid kraken
#

lmfao

wooden yarrow
#

the funny

placid kraken
wooden yarrow
#

the video does some unnecessary seeming stuff

#

ig for the funny

placid kraken
#

not really

wooden yarrow
#

or maybe it's more rigorous?

#

idk

placid kraken
#

especially the jacobian part

wooden yarrow
#

what does the vid do

wooden yarrow
placid kraken
#

the intuition is that when integrating with polar coordinates, r is the jacobian determinant

placid kraken
wooden yarrow
#

hm

placid kraken
#

i skipped showing this part

#

the jacobian is a matrix of all the partial derivatives of a multivariable function

wooden yarrow
#

oh that's what it is

warped sparrow
wooden yarrow
placid kraken
#

lmfao

wooden yarrow
#

:3

warped sparrow
#

NO

placid kraken
#

:3

warped sparrow
#

that nearly made my brain explode 😭

wooden yarrow
#

@warped sparrow how old r u

warped sparrow
wooden yarrow
#

trolled

near blade
#

Any devs here who can make a working pbpaste for ios 14.8 (paid ofc) 🫠

warped sparrow
#

i can just about do GCSE maths

placid kraken
#

real

#

i turn 16 on the 16th of june

#

!!!

warped sparrow
placid kraken
#

@wooden yarrow have you learnt hyperbolic functions

#

(and their derivatives)

wooden yarrow
#

trol

placid kraken
#

oh lmao

wooden yarrow
#

what abt them tho

placid kraken
#

idk

slender glade
placid kraken
slender glade
#

No

placid kraken
#

the /2 of both cancels out

slender glade
#

mhm no

wooden yarrow
placid kraken
#

GENDERS??

slender glade
placid kraken
#

i love versine

slender glade
#

i don't believe in anything after cot

#

sorry

placid kraken
#

arc whatver is just inverse

#

Si Ci are functions for integrating specific integrals that have no closed form solutions

#

like sinx/x

#

idk wha S(x) is

wooden yarrow
placid kraken
#

ah

slender glade
placid kraken
#

i assumed they were related to it lmao

wooden yarrow
#

wonder if there's other integrals like that

placid kraken
#

i mean you have sinx/x like i said

wooden yarrow
#

is sin(x)/x related to the erf?

placid kraken
wooden yarrow
#

hm

near blade
placid kraken
wooden yarrow
#

yeah I got that

#

but trying to figure out if Ci(z) and C(z) have any relation with each other

#

tro

#

or if Ci(z) is related to erf in some way

slim bramble
wooden yarrow
# placid kraken

I think it would be funny if there was this shit but for like functions

#

tro

placid kraken
#

no 😭😭

#

scary

wooden yarrow
#

but

#

connections !!

placid kraken
#

let’s see if ln(x) is related to kolmogorov-smirnov(n) guys

wooden yarrow
#

real

placid kraken
#

-statements dreamed up by the utterly deranged

wooden yarrow
#

@slender glade i think i would get beaten to death if i was seen watching the above video

#

😭

placid kraken
#

it came up on my fyp

#

those tiktok people know

wooden yarrow
#

they know what you are

placid kraken
#

what!!

wooden yarrow
#

:3

#

@placid kraken hm do you also fw physics

placid kraken
#

i havent really done physics at a high level yet

#

i do know about the relation between displacement, velocity, acceleration, jerk and a few things like that but i havent gone all out on it yet

drifting heron
tepid olive
wooden yarrow
#

true !

#

load bearing code (real)

tepid olive
wooden yarrow
tepid olive
#

hiiii i'm trying to generate a .tbd

#

cat@archimedes tbd % ./tbd.sh /Volumes/SkyUpdate19H384.D10D101D20D201OS/System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm64 APFS
Framework APFS not found in cache.

#

oooooops

#

so i can't paste the link to this github jist your modbot just flagged me for it i assume the author's account is on a "piracy list" but there's a snippet of code if you google to resize an APFS container

#

i'm trying to reduce my iOS APFS container so I can make room for a linux partition

tepid olive
#

// clang -o resize_apfs -Wall -Wextra -Wpedantic -Werror -Wl,-U,_mh_execute_header,-e,_main -Xlinker APFS.tbd resize_apfs.c

that's their compiler call for it and I'm trying really hard to get that APFS symbol table

#

(looks like a jtool caller tbh)

#

so project sandcastle android build seems to put a NAND image inside an APFS container and i don't know why they went that approach linux touching APFS is a recipie for disaster

sonic totem
tepid olive
#

but my end goal is to reduce the APFS container as small as I can and make a 2nd ext4 partition for a debian userland

wooden yarrow
#

guess it can't hurt to try tho

tepid olive
#

that's what i thought too but either way

#

cat@archimedes tbd % ./tbd.sh ./dyld_shared_cache_arm64 /System/Library/PrivateFrameworks/APFS.framework/APFS
Framework /System/Library/PrivateFrameworks/APFS.framework/APFS not found in cache.

#

for the record i've pulled the dyld_shared_cache_arm64 from my device, as well as a copy from an ipsw

wooden yarrow
#

also why can't you just use one from xcode

#

or whatever