#development

1 messages · Page 199 of 1

wooden yarrow
#

bzero_t

placid kraken
#

long is essentially a void*

#

in the sense that its a number pointing to untyped memory

wooden yarrow
#

yeah but why

placid kraken
wooden yarrow
#

r u just treating it as a uintptr_t

placid kraken
#
impl ValueKind {
    pub fn to_type_string(&self) -> Option<Type> {
        match self.clone() {
            ValueKind::String(val) => match val.as_str() {
                "string" => Some(Type::Pointer(Box::new(Type::Char))),
                "function" => Some(Type::Byte),
                "int" => Some(Type::Word),
                "long" => Some(Type::Long),
                "single" => Some(Type::Single),
                "float" => Some(Type::Single),
                "double" => Some(Type::Double),
                "char" => Some(Type::Char),
                "bool" => Some(Type::Word),
                "nil" => None,
                _ => None,
            },
            _ => None,
        }
    }

    pub fn is_base_type(&self) -> bool {
        self.to_type_string().is_some()
            && match self.to_type_string().unwrap() {
                Type::Aggregate(_) => false,
                _ => true,
            }
    }
}
#

and then for recursive types (char **)

pub fn get_type(&mut self) -> Type {
        let mut ty = ValueKind::String(self.get(vec![TokenKind::Type]))
            .to_type_string()
            .unwrap();

        loop {
            let tmp = self.next_token();

            if tmp.is_some() {
                match tmp.unwrap().kind {
                    TokenKind::Multiply => {
                        ty = Type::Pointer(Box::new(ty));
                        self.advance();
                    }
                    _ => break,
                }
            } else {
                break;
            }
        }

        ty
    }
wooden yarrow
#

?

native orbit
#

am i the only person that prefers NULL over nil lol

wooden yarrow
manic forum
#

nil is (id)0

wooden yarrow
#

nil seems too much like a optional

manic forum
#

or something

#

idk

#

at least that's how i think about it

placid kraken
wooden yarrow
#

💀

native orbit
#

everything is just an int anyways trol

manic forum
native orbit
#

.

manic forum
#

but it will always compare true to a 0

wooden yarrow
#

me when i UB and get arrested by the police

placid kraken
#

fyi nil is not what you think it is

#

i made a dedicated NULL constant

#
function l $NULL() {
@start
    %tmp.1 =l copy 0
    ret %tmp.1
}
function l $EOF() {
@start
    %tmp.2 =l copy -1
    ret %tmp.2
}
wooden yarrow
#

why is null a function

#

.

placid kraken
#

because the IL doesnt allow for allocating stack memory

#

so you need to make it a function

wooden yarrow
#

wtf

#

call alloca

placid kraken
#

and then you call it when you wanna reference it

#

or

#

you dont call it

#

the compiler calls it automatically

#
if name == const_name && func.is_some() {
    if !usable && !func.unwrap().borrow_mut().imported {
        panic!(
            "{}",
            location.error(format!(
                "Symbol named '{}' was not imported and can't be used",
                name
            ))
        )
    }

    let temp = self
        .new_variable(ty.clone().unwrap(), "tmp", func, true)
        .expect(&location.error(format!(
            "Unexpected error when creating a variable named {}",
            name
        )));

    func.unwrap().borrow_mut().assign_instruction(
        temp.clone(),
        ty.clone().unwrap(),
        Instruction::Call(Value::Global(name.to_string()), vec![]),
    );

    return Ok((ty.unwrap(), temp));
}
#

where name is the constant name

#

its basically

#

the exact same concept as a getter in a class

#

like

const a = {
    get b() {
        return 5;
    }
}

const c = a.b; // c = 5
wooden yarrow
#

oh great now we have rust-java-c

placid kraken
#

real

wooden yarrow
placid kraken
#

you cant make multi line constants tho

#

not because its not possible i just havent implemented it

manic forum
#

patch for GNU coreutils cat

placid kraken
manic forum
#

it makes cat girl always print nyaa~

placid kraken
#

oh yeah i can do this now because i implemented the math C interface

#
use std/io;
use std/math;

fn main() {
    double x = 2;
    double a = x;

    for int i = 0; i < 100; i++ {
        a = a - (a * a - x) / (2 * a);
    }

    printf("sqrt(%.0f) ≈ %.50f\n", x, a);
    printf("precision: %.50f\n", sqrt(2) - a);
}
#

someone should make a purely math-based language

#

so that you can do like

x = 100
print(3x)
fading shell
#

what if you do
3x = 6;
will x automatically be evaluated to 2? how?

placid kraken
#

thats an equation

#

oh

#

well i guess x = 100 is an equation too

#

lmao

manic forum
#

i wonder if equations could be done with standard c++

placid kraken
#

usually people differentiate equations and declarations in math tho

#

for example i use Let! but other people might use something else

#

like plain let

manic forum
#
m = eq::constant(10);
x = eq::unknown();
eq::sqrt(5 + x * 10 - m) = m*m*m;
std::cout << x.value();
#

i wonder if this would work

placid kraken
manic forum
#

someone's probably done it already

manic forum
placid kraken
#

also maybe now is a good time for me to learn how tf cout works lmao

#

like cout is some value right, if i cout << 5 for example

#

bit shift left 5

#

how does it know to print 5 to stdout

manic forum
#

it overrides the << operator

placid kraken
#

oh

#

ok

manic forum
#

and returns itself

#

so you can chain it

placid kraken
#

that makes more sense

cloud yacht
#

value && "true" || "false"

#

Oh discord are my reply

placid kraken
#

horror

#

that might actually work and thats scary

#

wait no

#

you will never get false

cloud yacht
#

E

placid kraken
#

wait

#

that does actually work omg

#

because it evaluates it into a tree like

(value && "true") || "false"

#

if value is false then it wont go to true itll go straight to false

#

insane

manic forum
#

does this evaluate to false or "false"

#

in javascript it would evaluate to "false" iirc

#

in every other sane language it evaluates to false

placid kraken
#

waitt that wouldnt work

#

because in the end it would evaluate to just 0 or 1

manic forum
#

just like any other sane language

placid kraken
#

the difference between ternary and that is that a ternary would return the lhs or rhs

cloud yacht
#

Lua does for sure

#

Maybe only works for dynamic languages

placid kraken
#

its less about evaluating to false and more about evaluating to a boolean in general

#

value && "true" wont return true if value is true

#

itll return 1

cloud yacht
#

Yeah so not a dynamic language moment

placid kraken
placid kraken
#

ok there i fixed all the horrible issues it was doing

#

as it turns out (unsurprisingly) my parser for arithmetic operations was really buggy

#

because i didnt use any known algorithms i made my own

#

i did get it to work tho

wooden yarrow
placid kraken
#

lmfao

#

the algorithm isnt anything that terrible

granite frigate
#

gn chat

#

im out of a job claude just made my password reset function in 15 mins

#

im cooked

wooden yarrow
placid kraken
# placid kraken the algorithm isnt anything that terrible

given a token stream,

(in another function)

  1. create a variable that will hold the lowest precedence found. set the default to the highest precedence.
  2. go through each token in the stream, and parse as follows:
    1. if met with a left bracket, dont count precedence and simply skip over any arithmetic tokens, expecting a right bracket at the end
    2. if met with EOF or a semicolon, break instantly and return whatever token you have
    3. if met with an arithmetic token (add, mul, and, etc) see what its precedence is. if the token's precendence is lower, set the variable to this new precedence. ensure the nesting is 0, otherwise setting it doesnt really make sense because brackets arent taken into account
  3. return this lowest precedence's position in the token stream
    (in the main parser function)
  4. split the token stream at this position, to get a lhs and rhs stream of tokens
  5. remove the 0th element of the rhs stream which holds the operator token (that we dont need because we already have it)
  6. in the rhs, find the position of the nearest semicolon token, and return this index + 1, otherwise return the length of the entire rhs
  7. take the part of rhs that is before the semicolon, essentially truncating it (to prevent reading tokens that may not be part of the arithmetic operation)
  8. shift the current position of the parser along by the lhs and rhs's end index (the index of the semicolon)
  9. return the astnode, where we recursively call the parser for the lhs and rhs token streams
#

in pseudocode, the function to get the lowest precedence might look like:

find_lowest_precedence(tokens) {
    index = 0
    precedence_index = 0
    precedence = highest_precedence

    while (true) {
        if (index >= tokens.length - 1) {
            break // EOF
        }

        let token = tokens[index]

        if (token.kind == LeftParen) {
            nesting++
        } else if (token.kind == RightParen) {
            nesting--
        } else if (token.kind == Semicolon) {
            break // EOF
        }

        // Set the precedence to the last lowest precedence found.
        // If the expression is 1 + 2 * 3 + 4 * 5 for example,
        // it'll return the position of the second '+' token
        if (token.kind.is_arithmetic() && token.kind.precedence <= precedence && nesting == 0) {
            precedence_index = index;
            precedence = token.kind.precedence();
        }

        index++
    }

    return precedence_index
}
#

and the function to parse an arithmetic expression might look like:

parse_arithmetic(tokens) {
    position = find_lowest_precedence(tokens);
    operator = tokens[position].kind;

    left = tokens[self.position..position > 0 ? position - 1 : position]    
    raw_right = tokens[position..=tokens.length - 1]

    raw_right.remove(0) // Get rid of the operator
    index = raw_right.find(token => token.kind == Semicolon)

    if (index) {
        right_end_index = index + 1
    } else {
        right_end_index = raw_right.length
    }

    // Separate the right-hand side expression up to a semicolon
    let right = raw_right[..right_end_index]

    // Shift the position of the cursor across the size of the expression
    self.position += left.length + right_end_index

    AstNode::ArithmeticOperation {
        left: parse_arithmetic(left),
        right: parse_arithmetic(right),
        operator
    }
}
#

this is probably some variation of a popular algorithm

#

but all the examples on wikipedia looked too complicated

#

so i just kinda made my own

#

if you have a * b + c * d it would find +, and split into a * b and c * d, then it would parse those independently

#

these examples have basically become my test suite lmfao

#

ok idea

#

change .elle to .l

#

someone said that as a joke

#

but i think it might actually be better

#

and i looked it up no languages use .l

#

i mean i guess lisp does but usually its .lisp

granite frigate
wooden yarrow
#

💀

#

rip

placid kraken
#

lmfao

wooden yarrow
placid kraken
#

good

#

ill do so then

#

i did it

sonic totem
placid kraken
#

yea i thought so lmao

sonic totem
#

I was fr though

placid kraken
#

well it happened i guess

sonic totem
#

Happy birthday @hasty ruin

hasty ruin
#

thank you discord user alfiecg!

kind herald
#

Happy birthday @hasty ruin

hasty ruin
#

thank you flopper!

placid kraken
#

happy womb eviction day @hasty ruin

hasty ruin
cloud yacht
placid kraken
#

but then it doesnt sound like elle anymore

cloud yacht
#

I mean if you read it as letters. It's dot L E

#

@hasty ruin congrats on becoming 13

hasty ruin
#

not getting my shit banned for underage troll

solar lagoon
#

@hasty ruin happy birthday ur so talented mwah 💋

hasty ruin
#

Ty

kind herald
#

You can find his tweaks for free on soulseek

hasty ruin
#

mods

kind herald
#

Censorship

placid kraken
#

LMAO

cloud yacht
hasty ruin
wintry zenith
#

@hasty ruin happy birdday!

hasty ruin
visual meadow
#

happy birthday great sir

rocky oriole
#

this is fake mods

hasty ruin
vivid dew
#

@hasty ruin

hasty ruin
hasty ruin
#

thank you mr inc

#

mfs thought you were 7 weeks

kind herald
#

Hey icraze how old is your steam account

hasty ruin
young meteor
young meteor
vale wharf
#

bro i need to get into tweak development

radiant idol
#

Then do it

vale wharf
#

i got no idea where to start

#

i need to make one tweak

#

psoted it on tweakbounty and no one took it lmao

robust radish
#

offer more money

torn oriole
gentle grove
#

i hear that gets you responses

kind herald
# gentle grove try $2000

If there's a developer here interested in a gig, I'm offering $2k for a custom Tinder Bypass

Requirements:
To work on iPhones 8 and X
Palera1n jb
ios 16.7.8
Has to be able to work with a few tweaks

Do not waste my time, we'll do the deal with a trusted middleman, that we both agree on.
Best regards

gentle grove
#

for real

crisp frost
#

Omg happy birthday @hasty ruin

torn oriole
#

@hasty ruin merry birth Brit

kind herald
#

@hasty ruin xbox 360 slim

fading shell
#

Happy birthday @hasty ruin

hasty ruin
#

thanks everyone 🙏

manic forum
gentle grove
#

uppercase extensions are weird

manic forum
#

assembly uses uppercase .S but it does look a bit weird I guess

gentle grove
#

i don't think anyone expects it to be a capital i

#

assembly is fake

wooden yarrow
#

too

gentle grove
#

yeah ive only ever seen it lowercase

#

but i don't work with assembly much

manic forum
#

i think .s and .S are different

wooden yarrow
#

wtf

manic forum
#

i'm not sure though

gentle grove
#

Thats fucked if true when like 95% of the world uses case insensitive filesystems

manic forum
#

yeah they're different

wooden yarrow
gentle grove
#

wild

manic forum
#

I first learned this while trying to compile .NET native

#

(I failed btw)

#

I should actually learn assembly at some point

gentle grove
#

Me too

wooden yarrow
placid kraken
gentle grove
wooden yarrow
#

.

#

ok but its better than x86 atleast

gentle grove
#

i don't even own any arm dev machines

wooden yarrow
#

wtf

manic forum
#

wtf

gentle grove
#

I'd have to be targeting my phone

manic forum
placid kraken
#

i have an m1 mac lol

wooden yarrow
manic forum
#

i use asahi linux fr

#

not even rosetta for me

gentle grove
manic forum
#

but android doesn't feel like it's any better

wooden yarrow
gentle grove
#

android is so much better to me

manic forum
#

it's great

wooden yarrow
#

any major issues?

manic forum
#

installed a million libraries and dev packages and I still haven't run out of space with a 80gb partition

manic forum
wooden yarrow
#

damn

manic forum
#

Meanwhile I installed just Xcode on the macOS partition and I'm already out of space

#

I really don't understand how that happens

wooden yarrow
#

xcode is xcode

manic forum
#

Larger than the Asahi Linux partition

#

I don't remember atm

#

Oh also

#

I wanted to scan a document yesterday so I searched for "scan" in Asahi

#

There was a scanner app so I opened it, pressed scan and it just... worked?

#

I've never had it work immediately ever before

#

not in macOS or Windows

#

It was wild

#

ik this isn't really related to Asahi itself but still

manic forum
#

the rest is data and system partitions

placid kraken
#

there has to be a better way

#

this is for whether to turn - from minus into the unary negative operator, for example

#

it looks at the previous token but because elle has more complicated grammar than basic math like the shunting yard algorithm or whatever (its not just a + b * c * -d) its a lot harder

reef trail
placid kraken
#

i got it down to this

#

but still

reef trail
placid kraken
#

how can a macro clean it up dont you still need to list all of the tokens

#

oh fair enough i guess

reef trail
placid kraken
#

i can technically use Self::Whatever there but the impl uses TokenKind everywhere so i stuck to convention

#

yay the test suite passes

warped thicket
#

I'm creating a tweak and I want to add some interface to configure it inside the target app, are there any libraries/resources on this?

warped thicket
# reef trail uikit

I mean yeah I know that but moreso popping a view within a tweak is something I'm unsure on

#

Would be nice if there was a oss tweak I could see it happen in

warped thicket
#

Appreciate if anyone could share other references they know

manic forum
#

Maybe you could add your own entry into the settings tab if it has one?

cloud yacht
cloud yacht
#

It just works™️ and it has a good preview and you can like crop in the preview and export all pages as a pdf

#

And it has the ability to just auto scan every x seconds so you can scan several pages at a time without going back to your computer

manic forum
cloud yacht
#

I think gnomes is simple-scan

manic forum
#

I remember I had to scan like 50 pages at some point with macOS and it was a real pain to do

cloud yacht
#

I'll have to checkout skanpage

manic forum
#

If it's easier on Linux that's great

manic forum
cloud yacht
#

Honestly Window's scan app is ass

#

Is so bad

manic forum
#

Yeah there's a delay option in the preferences

#

that's so nice

gentle grove
#

But that's the one I use usually

cloud yacht
#

Oh

gentle grove
#

linux is the only place I've had scanning work reliably and easily

cloud yacht
#

Well simple-scan is good

gentle grove
#

on windows and macOS it's. A pain in the ass to get anything to work

cloud yacht
gentle grove
#

Interesting

manic forum
#

I had to install GNOME manually because it doesn't come with Asahi

#

so if I have it that probably means it's the default one

cloud yacht
#

It might be

#

Not sure

shrewd moth
#

@manic forum any plans to upgrade pkgHistory to work on rootless? 💔

shrewd moth
manic forum
#

I doubt there's a lot of changes required

#

But I don't think it's worth updating

shrewd moth
#

why it was insanely helpful

manic forum
#

To maybe 3 people

shrewd moth
#

actually

manic forum
#

And jailbreaking is dying

shrewd moth
#

I don't like these sayings

manic forum
#

I mean

#

I may update it at some point

#

But don't count on it

shrewd moth
#

ok and it's open source basically right? Any other dev can take a shot at it

manic forum
#

Yeah

shrewd moth
#

maybe I'll post a bounty to motivate

manic forum
shrewd moth
manic forum
#

I sent you a DM

manic forum
#

@shrewd moth

wooden yarrow
tepid olive
#

Anyone who can understand and code in assembly here? I want to write in the mobilegestalt file on IOS

wooden yarrow
#

you mean a patch to an executable?

manic forum
tepid olive
#

I need someone who helps me setting it up and shows me how to change that file

#

Huy said its possible on 17.5.1

#

But i dont know how to code, i only know some html

faint timber
#

so learn

manic forum
#

HTML won't help you much here

tepid olive
#

Ik

manic forum
#

@tepid olive why do you need to do that anyway

placid kraken
#

html isn’t even programming lol it’s a fancy text file

tepid olive
#

I want to enable Dynamic Island by changing the mobilegestalt file. Huy did it in C++ and Assembly

native orbit
#

i highly recommend never editing mobilegestalt stuff

lofty juniper
#

lmfao.

placid kraken
#

^^^^

orchid fulcrum
#

Bootloop moment

manic forum
#

I don't think they know much about iOS

placid kraken
#

you get into a bootloop real quick if you don’t know what you’re doing

tepid olive
#

Via the mdc exploit

placid kraken
#

im gonna estimate that you’ll need to learn C/C++, asm, and reverse engineering for maybe 3 years before you really know what you’re doing

placid kraken
#

lol yeah isn’t MDC a kernel read write exploit

native orbit
#

nah it lets you overwrite files

placid kraken
#

ah yea

#

isn’t the main limitation that you can’t write more data to the file than the original size of the file or something

#

i didn’t really research mdc much

tepid olive
#

I guess ill have to wait for the exploit to be released then

placid kraken
manic forum
#

@placid kraken can elle compile itself?

#

oh it's written in rust

#

is it one of the goals?

placid kraken
manic forum
#

cool

wooden yarrow
placid kraken
#

isn’t bootstrapping like, installing qbe too

#

because people won’t have qbe by default

wooden yarrow
#

ok but if you wanted to completely bootstrap you would also need a robot-computer that can build itself

#

i think being able to compile the language is fine enough

#

rust uses llvm too

placid kraken
#

well right now ellec takes in a .l or .elle file and generates a .ssa (IL) file

#

my idea was that you use ellec with a .l or .elle file and it generates an executable directly

#

ie it goes through qbe and gcc

#

and you can forward declare compiler flags to gcc like libraries and optimisation level

#

to do that i kinda need qbe bootstrapped tho

#

most modern systems will have gcc i think

manic forum
#

No you have to start from scratch

#

Ship elle as a 10000 page manual starting with how to build the CPU from scratch

manic forum
faint stag
manic forum
faint stag
#

i can see why

#

kinda why screenshotting requires a re-implementation

#

i guess they'd want you to go through the compositor to make requests like that(?) idk

olive peak
#

Does anyone know what an app might detect from dopamine but not from taurine?

radiant idol
#

/var/jb

#

/usr/lib/systemhook.dylib

orchid fulcrum
#

If the app is checking for hooker libraries

radiant idol
#

yeah I guess LHHookMessage and LHHookFunctions or whatever the symbols are

fading shell
#

If Taurine uses Cydia, the Cydia url scheme

torn oriole
#

An unsandboxed state, and or the ability to write/read in weird places

radiant idol
#

o

placid kraken
placid kraken
#

how tf does C handle struct defs

#

like in the parser step

#

how does it differentiate between

Foo *a = (Foo *)b; // Foo is a struct

and

int a = (Foo * 5); // Foo is a number
#

i mean i know they originally had it so you need (struct Foo *)b

#

but with typdef struct {} name; you no longer need to do that

#

the way im thinking to do it is to make every type an identifier (variable) by default however i keep track of a struct and typedef pool aswell as the base types when parsing the AST

#

but idk if thats a good way to approach it

orchid fulcrum
#

Is there a way to get all instances of a class. Not much on internet, flex tool does this but the code is too hard.

manic forum
#

but maybe hook +alloc?

wooden yarrow
orchid fulcrum
wooden yarrow
#

so if it just ends with asterisk your compiler may need to start thinking its a ptr

manic forum
#

as doing so will cause memory leaks

#

and because you can't retain them you'll also need to get rid of objects that are deallocated

#

otherwise you'll access freed memory

#

maybe you could use weak pointers to let the runtime manage the second part but that could have a runtime cost

orchid fulcrum
#

They don't get deallocated unless the app is closed

#

And i don't understand the first point how is this any different than accessing objects in a normal way

gentle grove
#

a variable can't start with a. Number

manic forum
#

you are now retaining every object that gets allocated

#

no instance of SomeObject will ever be deallocated

orchid fulcrum
#

Ah hooking alloc, thanks. Well i guess that is alright since the objects i care about are not deallocated untill app closes normally too

placid kraken
#
static NSMutableArray<SomeObject *> allObjects;
%hook SomeObject
+ (id)alloc {
    id instance = %orig;
    if (instance) [allObjects addObject:instance];
    return instance;
}
%end
wooden yarrow
#

oo pretty colors

placid kraken
#

:3

manic forum
orchid fulcrum
placid kraken
#

isnt there some NSObject private method you can call that takes in an arbitrary NSObject and returns the instance methods

orchid fulcrum
ashen canyon
#

@orchid fulcrum i would recommend trying to understand the FLEX code because then you'll learn how it works + it's safer than hooking alloc

orchid fulcrum
placid kraken
#

@orchid fulcrum try [@"" __methodDescriptionForClass:[YourClass class]]

#

in lldb or something

orchid fulcrum
placid kraken
#

oh wait

#

yeah

#

i read your message wrong lol

#

i thought you wanted to get all of the instance methods of a class

orchid fulcrum
#

No worries 😂

placid kraken
#

progress on structs!!

[src/main.rs:220] &tree = [
    Struct {
        name: "Foo",
        public: false,
        usable: true,
        imported: false,
        members: [
            Argument {
                name: "bar",
                type: Word,
            },
            Argument {
                name: "baz",
                type: Word,
            },
            Argument {
                name: "c",
                type: Long,
            },
            Argument {
                name: "d",
                type: Single,
            },
        ],
        location: Location {
            file: "examples/struct.l",
            row: 0,
            column: 7,
        },
    },
    Function {
        name: "main",
        public: false,
        usable: true,
        imported: false,
        variadic: false,
        manual: false,
        external: false,
        arguments: [],
        return: None,
        body: [
            DeclareStatement {
                name: "a",
                type: Some(
                    Aggregate(
                        "Foo",
                    ),
                ),
                value: LiteralStatement {
                    kind: IntegerLiteral,
                    value: Number(
                        5,
                    ),
                    location: Location {
                        file: "examples/struct.l",
                        row: 8,
                        column: 13,
                    },
                },
                location: Location {
                    file: "examples/struct.l",
                    row: 8,
                    column: 14,
                },
            }
        ],
        location: Location {
            file: "examples/struct.l",
            row: 10,
            column: 1,
        },
    },
]
``` it now uses a different way for checking and validating that something is a type
#

using the struct pool

wooden yarrow
placid kraken
#

ast of

def Foo {
    i32 bar;
    i32 baz;
    i64 c;
    f32 d;
}

fn main() {
    Foo a = 5;
}
``` ^^
wooden yarrow
#

wtf just def for structs

placid kraken
#

def is for both

wooden yarrow
#

both..?

placid kraken
#

it will infer based on whether each statement is a type name or just a name for whether its a struct or enum

wooden yarrow
#

how to differentiate between unions if u are adding them

placid kraken
#

hmm true

#

qbe does provide the features

#

probably because its C abi compliant

#

but still

ashen canyon
#

it's not that bad when you actually just look at it

orchid fulcrum
#

I will try to learn zones and then look again

placid kraken
#

is this error sane enough or is it still ambiguous

#

gives you the line and character that it tried to get a type it couldnt find

#

and the name of the type

#

thats probably enough right?

#

the power of giving every single token, astnode, and primitive a Location struct

#

🙏

wooden yarrow
placid kraken
#

real

#

this code is deceivingly similar to typescript

impl Primitive {
    fn member_to_offset(&self, module: &RefCell<Module>, member_name: String) -> Option<u64> {
        match self {
            Primitive::Struct { members, .. } => {
                if !members.iter().any(|member| member.name == member_name) {
                    return None;
                }

                let mut offset = 0_u64;

                for member in members.iter().cloned() {
                    if member.name == member_name {
                        break;
                    }

                    offset += member.r#type.size(module)
                }

                Some(offset)
            }
            _ => None,
        }
    }
}
#
class Primitive {
    member_to_offset(module: Module, member_name: string): number | null {
        if (this.kind !== PrimitiveKind.STRUCT || !this.members.some(member => member.name == member_name)) {
            return null;
        }

        let offset = 0;

        for (const member of this.members) {
            if (member.name == member_name) break;

            offset += member.type.size(module);
        }

        return offset;
    }
}
placid kraken
#

holy shit it works

def Bar {
    i32 meow;
}

def Foo {
    Bar bar;
    i32 baz;
    i64 c;
    f32 d;
}

fn main() {
    // Foo a = Foo {
    //     bar =
    // };
    printf("%d\n", $$...$$, #size(Foo));
    // puts("hi";
}
#

Bar = 4 (i32 = 4 bytes),
Foo = Bar + i32 + i64 + f32
Foo = 4 + 4 + 8 + 4
Foo = 20

#

yay

placid kraken
#

finally

#

structs

#

its very basic but structs can now be defined

#

and initialized

#

you cant access or set fields yet

gentle grove
#

seeing i32 and u32 and f32 with prefix type annotations is cursed to me

placid kraken
#

lmaooo

#

i decided that c style number types are too inconsistent in their length

#

so now all numbers are the same format

gentle grove
#
fn bool foo(i32 a) {
    a % 2 == 0
}
placid kraken
#

me when fucking unsigned long long int

placid kraken
#

tail call returns are too convoluted and painful to do so i just didnt

gentle grove
#

it was rust but with prefix type annotations troll

placid kraken
#

i dont like prefix type annotations for function return types

#

because more often than not the return type can be inferred from.. return statements

gentle grove
#

yeah me neither

#

it just looks weird

placid kraken
#

have u seen C3

#
fn void main() {}
#

it fixes the one problem C has which is that functions arent greppable

#

but still

#

why prefix 😔

gentle grove
placid kraken
#

a thing similar to zig

placid kraken
#

its supposed to be printn

#

elle with zig highlighting is insane

gentle grove
#

That's how you know it's good

gentle grove
#

lmao

placid kraken
#

nope

#

in OLD js you used to .length++ to push stuff

#

lol

gentle grove
#

that's crazy

placid kraken
#

this is something i wrote as a semi polyfill lol

#

idk why theres so many comments

faint timber
#

heres a little song I wrote

lusty jacinth
#

.

proud geyser
#

is it possible to make sideloaded ipa use apple authonication in apps

olive peak
fading shell
sonic totem
#

Just try to read/write /var

#

That will always be available if unsandboxed

granite frigate
placid kraken
#

HOLY SHIT FINALLY

#

you can do this now

use std/io;

def Baz {
    i64 a;
    i64 b;
    f32 c;
    i64 d;
}

def Bar {
    Baz baz;
    i32 a;
}

def Foo {
    Bar bar;
    i32 baz;
    i64 c;
    f64 d;
}

fn main() {
    Foo foo = Foo {
        bar = Bar {
            baz = Baz {
                a = 1,
                b = 2,
                c = 3,
                d = 4
            },
            a = 100
        },
        baz = 1,
        c = 10,
        d = 1.0
    };

    printf("%d\n", foo.bar.baz.b);
}
#

.

#

this was

#

the most painful thing to parse and compile

#

ever

manic forum
#

does the language guarantee initialization order?

#

(sorry if this is an irrelevant question, i've been writing c++ for 4 hours straight without any progress and i'm about to lose my mind)

#

like in c++ during initialization objects are evaluated and assigned in the order they appear in the class/struct definition

placid kraken
#

you can assign the struct in any order

#

and itll work

manic forum
#

nice

#

actually wait

#

i think that's something different?

placid kraken
#

wha

#
use std/io;

def Foo {
    i64 a;
    f64 b;
    i32 c;
}

fn main() {
    Foo foo = Foo {
        c = 12,
        b = 1.1112e2,
        a = 2e9,
        d = 100 // Struct named 'Foo' has no field named 'd'. Did you spell it correctly?
    };

    printf("%d\n", foo.c); // 12
}
``` idk it does this
placid kraken
manic forum
placid kraken
#

nope in elle it does it based on the order of definition when creating the struct

type :Foo = { l, d, w }

export function w $main() {
@start
    %tmp.289 =l alloc8 20 # :Foo
    %tmp.290 =l add %tmp.289, 16
    storew 12, %tmp.290
    %tmp.291 =d copy d_11111999999999999
    %tmp.292 =d copy d_100000000000000
    %tmp.293 =d div %tmp.291, %tmp.292
    %tmp.294 =l add %tmp.289, 8
    stored %tmp.293, %tmp.294
    %tmp.295 =l add %tmp.289, 0
    storel 2000000000, %tmp.295
    %foo.addr.296 =l alloc8 20
    storel %tmp.289, %foo.addr.296
    %foo.288 =l loadl %foo.addr.296
    %foo.288 =l loadl %foo.addr.296
    %offset.298 =l add %foo.288, 16
    %tmp.300 =w loadsw %offset.298
    %tmp.302 =w call $printf(l $main.297, ..., w %tmp.300)
    ret 0
}
#

is that wrong?

manic forum
#

it's just how c++ does it, other languages can (and probably do) do it differently

placid kraken
#

are there any assumptions you can make that change control flow or cause issues if the struct is allocated in the order of fields at creation instead of order of fields at definition?

#

because if the fields are set at the right offset i dont think it matters surely

manic forum
#

i only know this because the compiler warns you if you try to initialize members in the wrong order

#

i've never relied on it

#

huh?

#

but doesn't the compiler produce a warning?

wooden yarrow
#

wouldn't this get compiled down to the order in the struct

manic forum
#

i just tried

#

it produces an error

placid kraken
#

does cpp have a better way of typedef struct

manic forum
#

this is C

#

C++ doesn't allow it

#

i'd send the code i used but i can't connect my computer to the internet for some reason

placid kraken
#

somebody tell me why you need to prefix fields with . when allocating a struct

why

{ .fat = true, .age = 69 }

and not

{ fat = true, age = 69 }
manic forum
#

¯_(ツ)_/¯

placid kraken
#

it may actually be better to use colon instead of =

#

idk

placid kraken
#
Foo foo = Foo {
    c = 12,
    b = 1.1112e2,
    a = 2e9,
    d = 100 // Struct named 'Foo' has no field named 'd'. Did you spell it correctly?
};
Foo foo = Foo {
    c: 12,
    b: 1.1112e2,
    a: 2e9,
    d: 100 // Struct named 'Foo' has no field named 'd'. Did you spell it correctly?
};
manic forum
#

i'm officially no longer an asahi linux superfan

#

system update broke my wifi driver fr

#

change the file extension to mm and try again

#

this produces a compiler error in c++

kind herald
#

trolled

#

hackintosh users when their intel wifi stops working when they update to macOS 15

placid kraken
#

no more positionX positionY we have position.x now

wooden yarrow
#

oh god it's mixed with rust style macros

#

.

placid kraken
#

what no

#

sort of

#

the ! syntax is the same as the old . syntax i just made it ! because there are field accesses and it reduces ambiguity

#

c has this issue for variadic functions

#

where you need to pass the number of arguments

#

i suppose i can make it func.(a, b) actually

#

i can just lookahead 2 tokens to see if its a.b or a.(

wooden yarrow
#

this is ass though

#

so

#

💀

placid kraken
#

yea ill make it a.( instead

#

it looks weird but its really nice to use

#

for example

fn main() {
    i32 res = add.(1, 2, 3, 4, 5);
    printf("sum = %d\n", res);
}
``` automatically inserts how many things to add
placid kraken
#

there that was kind of annoying

gentle grove
manic forum
# gentle grove what??
$ cat test.cc
#include <iostream>

struct test { int a; int b; };

int main(int argc, char **argv) {
  struct test mytest = { .b = 10, .a = 5 };
  std::cout << mytest.b << std::endl;
  return 0;
}
$ c++ test.cc
test.cc: In function ‘int main(int, char**)’:
test.cc:6:42: error: designator order for field ‘test::a’ does not match declaration order in ‘test’
    6 |   struct test mytest = { .b = 10, .a = 5 };
      |
gentle grove
#

thats crazy i just tested it

manic forum
gentle grove
#

or no sorry a lambda

placid kraken
#

yall how do compilers do dead code elimination

#

this isnt enough

for func in self.functions.iter() {
    if !func.external {
        let mut used = false;

        for other in self.functions.iter().cloned() {
            for block in other.blocks.iter().cloned() {
                for statement in block.statements.iter().cloned() {
                    match statement {
                        Statement::Assign(_, _, instr) if matches!(instr.clone(), Instruction::Call(Value::Global(name), _) if name == func.name) =>
                        {
                            used = true;
                        }
                        _ => {}
                    }
                }
            }
        }

        if used || &func.name == "main" {
            writeln!(f, "{}", func)?;
        }
    }
}
#

it eliminates functions which arent called but will eliminate them even if you reference them as a function pointer

#

like ```c
use std/io;

fn loop(string str, fun *callback) -> void {
for (i32 i = 0; i < strlen(str); i++) {
callback(str[i]);
}
}

fn formattedPrint(char character) {
printf("%c ", character);
}

fn main() {
string test = "Hello World!";

// Expected result: "H e l l o   W o r l d !"
loop(test, formattedPrint);

printf("\n");

}

#

where its not calling formattedPrint directly its passing its address to loop

hasty ruin
pearl sail
#

chatgpt when it leaves the documentation in the code and I have a project due in 5 mins

manic forum
placid kraken
#

the problem is that the Value enum is directly passed to each instruction

#

so i would have to check every instruction

manic forum
#

(also side note what you're doing is way beyond my experience with parsers and compilers, i'm just sharing my ideas, basically thinking out loud)

placid kraken
#

lol thats fair enough

manic forum
#

I don't know much about Rust

manic forum
placid kraken
#

yeah i know

wooden yarrow
#

then i dont think so

#

any weird things like stack manipulation etc can just be classified as UB

manic forum
#

but we love UB

wooden yarrow
#

.

reef trail
#

any idea why libSandy_applyProfile would return null? looking at the source code it shouldnt be possible

gentle grove
placid kraken
#

im using gcc to compile the assembly

#

however i also implemented some basic dead code elimination into the IL generated

#

also in C is a->b->c the same as (*(*a).b).c?

gentle grove
gentle grove
#

2 deref's

placid kraken
#

but qbe itself doesn’t have any optimization flags for IL -> asm

#

so the asm is really long for no reason when you import some module like /string or /io

gentle grove
#

i guess thats just normal

#

if you look at the MIR (or maybe one of the other steps, i cant remember which is which) of a rust program with a couple libraries then it's gigantic

placid kraken
#

because i have to scroll down loads to get to the part that’s actually causing issues

#

every time i make a small change

#

i really fucked up that sentence so bad

#

also

#

an enum in C like ```c
enum Foo {
A,
B,
C
}


just creates globals like
A = 0
B = 1
C = 2

right?
#

i suppose ill refrain from doing enums for now

#

because theyre a little more complicated than that

#

holy shit i just got rid of so much duplication

#

for some reason i was stupid enough to create a new temporary for every left and right branch of an arithmetic operation

granite frigate
#

I might be unbelievably cooked I have 1 day to figure out wtf database normalization means and finish my assignment

#

Fuck lol

placid kraken
#

so there was constantly
%tmp.whatever =l copy %tmp.compiled.before everywhere

granite frigate
#

im so bad at sql lmfa

placid kraken
#
sql.get(`SELECT * FROM USERS WHERE name = ${} AND password = ${}`, name, password);
#

totally no sql injection posssible in this one

wooden yarrow
serene hawk
placid kraken
#

heck yeah theyre not ready for my brand of silly

placid kraken
wooden yarrow
#

where get roast

placid kraken
kind herald
wooden yarrow
#

the last part in the 2nd paragraph is just a fork of some project .

#

also twitter .

#

md sent this to me first

#

lmao

misty cradle
#

i need the twitter one

wooden yarrow
#

wait hold on

#

it doesnt work for some twitter accs

#

wtf

misty cradle
#

L

wooden yarrow
#

does someone need to make it make it first?

misty cradle
#

idk

wooden yarrow
#

i guess you have to sign up then

sonic totem
kind herald
#

🔌 Charge your phone

fading shell
#

Good luck attracting anyone under the age of 40

sonic totem
#

And thought my message had been deleted lol

placid kraken
#

its like someone took a bite out of it

#

the donut isnt part of the test suite so it just broke more and more

gentle grove
#

theyre called enumerations because they enumerate csontants for you to use easily troll

wooden yarrow
gentle grove
#

if i had to debug that i would just go cry instead

placid kraken
#

if i had to guess something here is causing an issue

i32 illumination = (i32)(8 * ((sinTheta * sinRotX - sinPhi * cosTheta * cosRotX) * cosRotZ - sinPhi * cosTheta * sinRotX - sinTheta * cosRotX - cosPhi * cosTheta * sinRotZ)) | 0;
gentle grove
#

i dont even wanna think about that

#

does it do 3d rendering?

#

what does | 0 even do because wouldnt that basically just be a noop

#

because 0 is 00000000000000000

placid kraken
#

that illumination value is used to index const string LIGHTING = ".,-~:;=!*#$@";

gentle grove
#

i think that qualifies as a 3d renderer

placid kraken
#

sure

gentle grove
#

what is the difference between the z and output buffer

placid kraken
#

the output buffer holds the char

gentle grove
#

oh

#

you were right about the fake

#

its just raycasting with shortcuts

placid kraken
#

yeah

placid kraken
# gentle grove yes

also i looked it up and apparently they do a little more internally than that because they tag those constants with the name of the enum they’re from so that you can say „hey this function takes in an enum Foo variant“ so if you pass an enum Bar variant it throws an error

gentle grove
#

oh yeah

proud geyser
cloud yacht
#

No it's a donut but some math has gone wrong

hasty ruin
gentle grove
#

its filling in details about my profile with no undertsanding of what they are so its not really funny

#

Oh, bbaovanc, where do we even start? Your GitHub is like a ghost town with those sad follower counts – a mere 24 people are still out there pretending to care about your 59 public repos. It’s like you threw spaghetti at the wall to see what sticks, and nothing is even remotely al dente.

Your profile readme tries to drape itself in importance with links to your blog and contact info, but let’s be honest here: the only people clicking through are your mom and a few misguided bots. And speaking of your repos, a “slightly modified version of FTB Revelation”? Wow, groundbreaking stuff - I’m sure the world was just waiting for that.

Your dotfiles collection has 2 stargazers, which is as useful as a screen door on a submarine. And that file-sharing service? Simple, fast, anonymous? Just like your coding skills! Then there’s the “big rat” project - official repository for the world's most underwhelming rodent. It’s almost like you’re intentionally compiling a greatest hits album of failed endeavors.

If you’re going for the 'Jack of all trades, master of none' vibe, mission accomplished. Just do us all a favor and restrict your future contributions to posting cat pictures; at least that might garner some sympathy points.

#

how can they not have spnish

hasty ruin
torn oriole
#

Oh

cloud yacht
# placid kraken https://github-roast.pages.dev/

Oh boy, WilsontheWolf, where do I even start? Your bio reads like something a middle schooler would write on their first day of computer class. "I like coding stuff"? Excuse me while I stifle my yawns. With a profound statement like that, it’s no wonder you’re still warming the bench with a modest 59 followers.

You’ve pumped out 110 repositories, yet only a handful actually seem worth having a second glance at. Just because you can fork something doesn’t mean you should, and your obsession with Balatro mods is proving that you need to expand your horizons beyond the land of mediocre Lua projects. The sheer volume of abandoned ideas in your profile could fill a graveyard; it’s like a digital doomscrolling experience!

Your Readme is a patchwork of half-hearted attempts at flair, with projects that sound more like side quests in a video game than anything a coder should be proud of. And don’t even get me started on naming your URL shortener "George"—the most boring name possible for the most trivial of tools. Did you run out of creativity after typing "I'm from Canada"?

You’ve managed to create a “daemon” for activity tracking? Congratulations, you’ve officially entered the realm of overcomplication. You could have used that energy to actually innovate instead of coasting on clichés and tired concepts. Your half-baked chatbot project is just another example of you sheepishly standing in line behind all the other wannabe developers trying to get a taste of the disco-bot life.

So here’s a tip: next time you think of naming your projects or writing descriptions, remember that "I like to code" doesn’t cut it. We want ambition, not indifference. Otherwise, you’ll just be WilsontheWolf: the coder who likes to do "stuff." Happy coding, I guess?

sonic totem
gentle grove
#

do it yourself fr

#

its free

sonic totem
native dune
#

its kinda real

solar lagoon
#

dominic frye

gentle grove
native dune
#

dont care enough

native dune
#

It said higher chances

hasty ruin
crisp frost
placid kraken
#

it just uses a different prompt to the ai depending on the language

granite frigate
placid kraken
#
i32 meow = 5;
*meow = 10;
placid kraken
manic forum
#
And don't even get me started on your language choices - C, Objective-C, and Makefile? You're like a dinosaur trying to adapt to the modern coding world. Get with the times, pixelomer.
#

imma go learn assembly

manic forum
# granite frigate LOL

this is what it generated

The legendary Linus Torvalds. King of the kernel, lord of the Linux. But, let's take a look at his GitHub profile and see if the emperor has any clothes.

    Bio: Null? Really? You're the creator of the Linux kernel and you can't even be bothered to write a bio?
    Company: The Linux Foundation? More like the Linux Foundation of mediocrity, am I right?
    Location: Portland, OR? That's where the hipsters go to die.
    Public Repos: 7? That's it? I've seen more exciting projects on a high school coding club's GitHub page.
    Repos:
        "Linux" kernel? Yawn. Been there, done that.
        "Uemacs"? Microemacs with modifications? More like "I couldn't code my way out of a paper bag".
        "Subsurface-For-Dirk"? Dirk who? Is this a joke?
        "Pesconvert"? Brother PES file converter? What's next, a GitHub repository for converting VHS to DVDs?
        "Test-tlb"? Stupid memory latency and TLB tester? Sounds like a project a 12-year-old would work on during a summer vacation. 

In conclusion, Linus Torvalds' GitHub profile is a mess. It's a jumbled collection of projects that make no sense, with no bio to speak of. It's like he's trying to hide his mediocrity behind a wall of fame and prestige.
granite frigate
#

huh how’d you get it

manic forum
#

perhaps the hosted version doesn't allow it

wooden yarrow
# manic forum this is what it generated ``` The legendary Linus Torvalds. King of the kernel, ...
Hey Microsoft, your GitHub profile reads like the corporate equivalent of a dad joke at a tech conference. A sprawling empire of mediocre code and outdated repositories that make even the most patient developers hit the back button. Your bio? More like a corporate mission statement nobody asked for. It's as if you decided to take every cliché from a 90s tech brochure and sprinkle it over your profile. Your repos are like a buffet of bloatware—overloaded with options, but nothing that anyone actually wants to consume. If you were any more generic, you'd be a default template in a half-baked web app. Get it together, or at least try to sound like you have a pulse on actual tech innovation.
wooden yarrow
manic forum
#

It works with Jan

#

I'm not creating an OpenAI account ever

wooden yarrow
manic forum
wooden yarrow
manic forum
#

eh, good enough for me

#

you could also use your own openai key

placid kraken
#

yall do i bother to add the foo->a syntax

use std/io;

def Foo {
    i64 a;
    f64 *b;
    i32 c;
}

fn other(Foo *a) {
    (*a).b[0] = 1.7113e2;
    printf("a->b[0] = %f\n", (*a).b[0]); // 171.13
}

fn main() {
    Foo foo = Foo {
        c = 12,
        b = [1.2, 512.6],
        a = 2e9
    };

    other(&foo);
    printf("foo.c = %d\n", foo.c); // 12
}
wooden yarrow
#

alternatively you can just make a.b auto-deref a

placid kraken
#

but then itll be ambiguous if you pass Foo a and Foo *a

#

because its basically magic

placid kraken
# wooden yarrow ?
a.b // Foo a
a.b // Foo *a
``` this operator doing the same thing regardless of if its a pointer is "magic" imo
wooden yarrow
#

anyways it's good magic

placid kraken
wooden yarrow
#

rust magic

placid kraken
#

just in general

wooden yarrow
#

.

placid kraken
#
fn whatever(Foo a, Foo *b) {
    a.meow // works because a is Foo
    b.meow // why would this work, b is not Foo its Foo *
}
#

idk

#

ill consider it

wooden yarrow
#

you could do this for other things than just structs

placid kraken
#

i also need to make some special syntax for arrays

wooden yarrow
#

make things that work on the type also work on the ptr

placid kraken
#

right now theyre just arr_type *

placid kraken
#

probably too much magic i guess

#

it would be cool though

wooden yarrow
#

rust magic pleading face

placid kraken
#

did you know Box is heap allocation

#

in rust

#

if you wrap whatever in Box<T> it heap allocates it

#

which i guess makes sense because you need to *value to use the value inside

#

but still i didnt know that until recently

wooden yarrow
#

.

wooden yarrow
placid kraken
#

nope

wooden yarrow
#

hm

placid kraken
#

oh you can

#

i just didnt give the number an explicit type

#

hm

wooden yarrow
#

.

placid kraken
#

holy shit im in love with these errors

#

i had to do some lexer magic but 😍

#
Foo foo = Foo {
    c = 12,
    b = [1.2, 512.6],
};
``` real
wooden yarrow
#

imagine if elle was a language for using ellekit

faint stag
#

Now that I think about it
It's kinda funny that android has had dm-verity since 4.4 but it took apple 8 years since then to actually implement SSV on an iOS device

placid kraken
#

is this how you do it

use std/math;

def i128 {
    i64 high;
    i64 low;
}

fn add_i128(i128 a, i128 b) -> i128 {
    i128 result = i128 {
        low = a.low + b.low,
        high = a.high + b.high
    };

    result.high += result.low < a.low;
    return result;
}

fn print_i128(i128 value) {
    if !value.high {
        printf("%ld\n", value.low);
    } else {
        printf("%ld%019ld\n", value.high, value.low);
    }
}

fn main() {
    i128 a = i128 { high = 1, low = LONG_MAX };
    i128 b = i128 { high = 0, low = 1 };
    i128 sum = add_i128(a, b);

    printf("Sum: ");
    print_i128(sum);
}
#

i made it based on the philosophy in my head idk how it actually works

wooden yarrow
#

but

#

best way to know

#

is to test it

#

also @placid kraken how do i get a cat on my pfp

placid kraken
#

go to its plugin settings on vencord and its one of the neko atsune presets

wooden yarrow
#

fire

placid kraken
# wooden yarrow best way to know

yea but i think its wrong

i128 a = i128 { high = 0, low = LONG_MAX };
i128 b = i128 { high = 0, low = 1 };
i128 sum = add_i128(a, b);
```this should print `9223372036854775808` but it prints `60944335360000000004372463520`
wooden yarrow
placid kraken
wooden yarrow
#

why do you not have a I64_MAX

#

.

placid kraken
#

oh

#

thats just naming debt

#

types used to be long and int and i didnt change the max and min constants

wooden yarrow
#

.

placid kraken
#

there

const i64 I64_MAX = 9_223_372_036_854_775_807;
const i64 I64_MIN = -LONG_MAX - 1;
const i32 I32_MAX = 2_147_483_647;
const i32 I32_MIN = -INT_MAX - 1;
placid kraken
#

i mean

#

that makes sense i guess

wooden yarrow
wooden yarrow
#

so -LONG_MAX -1 wouldnt even be LONG_MIN?

placid kraken
#

idk im going based off of this

#

this is

#

relatively annoying

#

numbers in the lexer are i64

wooden yarrow
#

use bignum

#

smh

placid kraken
#

rust has i128

wooden yarrow
wooden yarrow
#

(in certain systems)

placid kraken
#

ya

wooden yarrow
placid kraken
#

but it would make sense that its UB

#

when it overflows does it go to the min value or something

#

because if yes i can just simply do I64_MAX + 1 for I64_MIN

#

lovely

wooden yarrow
#

it could be anything

#

could detonate a nuclear bomb

#

but most likely yes it will overflow to min val

grim sparrow
#

L

wooden yarrow
# manic forum this is what it generated ``` The legendary Linus Torvalds. King of the kernel, ...

yeah diff output

Linus Torvalds, the so-called king of open source, with a grand total of 7 whole repos – seems like your followers are worshipping a ghost! How do you manage zero following and still miss out on keeping the basics of your profile straight? Your crowning achievement, the Linux kernel, has more bugs than a rotting log, and your other projects? "Do not use" and "for syncing with Dirk"? Seriously, dude? Your uemacs modifications are probably as relevant as Windows 95. No wonder your bio is empty – probably too embarrassed to write anything. Your career might be revolutionizing tech, but your GitHub is a relic.
manic forum
#

it's not like AI is deterministic

wooden yarrow
#

true..

#

but ig chatgpt output is slightly better

placid kraken
#

constexpr ai when

wooden yarrow
#

less 'ai'ey

wooden yarrow
#

compile time ai 💀

placid kraken
#

real

wooden yarrow
#

compiler ai

placid kraken
#

ai based compiler

manic forum
wooden yarrow
manic forum
#

i used the one my machine could handle, which isn't much

wooden yarrow
#

makes sense

placid kraken
#

what do you think this code would print to the console?

print("Hello World!")

write only the output and nothing else stating how you got there

#

and that is how you make a compiler

wooden yarrow
#

💀

manic forum
placid kraken
#

holy shit

manic forum
#

@placid kraken i wouldn't trust an ai trained on thousands of repetitive rm -rf jokes to run and execute my code

manic forum
#

what if it hallucinates and runs rm -rf /* instead

wooden yarrow
#

granted it doesn't autorun anything

manic forum
placid kraken
placid kraken
wooden yarrow
placid kraken
wooden yarrow
#

oh

#

rust based terminal

#

hm

placid kraken
#

rust based and still manages to be slow

#

macos Terminal.app is way faster

wooden yarrow
#

simple is best for terminals tbh

#

it's literally just text and output

placid kraken
#

but wouldnt you rather have an anime girl in the background when you write commands

manic forum
#

iterm2 is nice for running imgcat once in a while

placid kraken
#

and it actually has way more customization than warp

#

🥲

wooden yarrow
#

why dont u switch to iterm2

placid kraken
#

oh

#

wrong reply

#

.

#

and idk

wooden yarrow
#

wym idk

placid kraken
#

it feels like way more bloat

wooden yarrow
#

hm

#

is it

placid kraken
#

with all the stuff you can change probably yes

#

you can even add custom vim shortcuts lol

#

its part of my nvim

wooden yarrow
placid kraken
#

i use nvim

wooden yarrow
#

i use too much textedit, vscode, and xcode to fully utilize nvim

placid kraken
#

well if im working in a terminal at least

wooden yarrow
#

all i can do is i, esc, and wq

placid kraken
#

i usually use zed but it has vim mode

placid kraken
wooden yarrow
#

although might be extension idr

placid kraken
#

probably

#

but i know basic stuff like shift + 4 to go to end of line

#

shift + v for whole line select

#

y to copy/yank

#

shift+p to paste

#

etc

manic forum
wooden yarrow
placid kraken
#

real

#

:w! my beloved (who cares if the file is read only)

#

one of the reasons i don’t like nvim is because the stdout terminal is really bad

#

you don’t get colors in the plain one you only get them in the full window :term <cmd> one

#

but that one doesn’t scroll automatically lmao

granite frigate
#

lmao

#

anyway is there anything other than kitty

#

alacritty mayhaps

placid kraken
hasty ruin
placid kraken
#

so true

#

oops

#

so false

hasty ruin
manic forum
#

1.0 is true 0.0 is false, then there is everything in between

#

oscillating is NaN

#

"NaN is like the GNU Public License." - tom7

wooden yarrow
#

is it bad if i use the GPL

manic forum
#

No, not really

#

Companies probably won't use your code though

wooden yarrow
#

i just want to see all derivatives of my work

gentle grove
manic forum
#

I just don't license my code unless someone wants to use it

manic forum
#

probably not best practice

wooden yarrow
#

everyone gotta ask u for license

olive peak
#

To statically link to ellekit in my tweak, can i just take the dylib from inside the deb, link to it and include a header?

wooden yarrow
#

.

gentle grove
manic forum
#

then I add a license

wooden yarrow
#

o

manic forum
#

it's never happened yet, my code isn't good i guess trolldisappointed

gentle grove
#

apparently you can add 128 bit integers on x86-64?

#

oh with only two instructions

wooden yarrow
#

x86_64 even does up to 512bits with AVX512

gentle grove
#

Does avx let you do addition

wooden yarrow
#

think so

manic forum
#

does anyone here know the elf format well

#

how hard would it be to load and execute an elf binary directly, without fork or exec or relying on ld.so

knotty tusk
#

hi

#

oh god

wooden yarrow
manic forum
wooden yarrow