[a / b / c / d / e / f / g / gif / h / hr / k / m / o / p / r / s / t / u / v / vg / vm / vmg / vr / vrpg / vst / w / wg] [i / ic] [r9k / s4s / vip / qa] [cm / hm / lgbt / y] [3 / aco / adv / an / bant / biz / cgl / ck / co / diy / fa / fit / gd / hc / his / int / jp / lit / mlp / mu / n / news / out / po / pol / pw / qst / sci / soc / sp / tg / toy / trv / tv / vp / vt / wsg / wsr / x / xs] [Settings] [Search] [Mobile] [Home]
Board
Settings Mobile Home
/g/ - Technology


Thread archived.
You cannot reply anymore.


[Advertise on 4chan]


File: file.jpg (130 KB, 1920x1080)
130 KB
130 KB JPG
OK, fine. I'm fucking tired of segfault bugs in my C project, I'm considering unironically using Rust for the next one. Tell me about Rust's advantages, disadvantages and what do I need to know before dipping my toes into it.
>>
>>100176118
Apart from the community, Rust is an okay language. Syntax is a bit weird but you can get used to it. It'll feel awkward at first, especially the results. If you're going to start learning, just stay away from the freakshow they call a community.
>>
>>100176118
Just link with libasan. You get all the nice bounds checking without the faggotry.
>>
use Go
unlike Rust, Go has amazing community too
>>
>>100176118
Not against Rust as a concept, in fact it seems like it has added a lot of value to the industry, but please before you switch stop doing whatever it is that causes so many segfaults in your code. It literally shouldn't be that common. You're approaching things all wrong
>>
>>100176118
whats your c project? i wanna learn low level but i cant think of anything to make lol
>>
>>100176118
1. git gud
2. enable compiler warnings
3. use clang sanitizers, such as asan that automatically detect where you fucked up
>>
>>100176118
you should not be using Rust if you constantly encounter segfault bugs. learn how to program first and then you can install the restrictive guardrails after you don't encounter them very often anymore. you need to crash and burn when you do something that shows a lack of understanding of how memory works, otherwise you'll never learn!
>>
>>100176118
Use C++ because it is a white man's language, Mahiro would use C++
>>
>>100176760
mahiro is a girl thoughever (literally me)
>>
>>100176760
Mahiro would use Rust
>>
>>100176811
He's a man, whose body got changed to a girl involuntarily (his sister gave him a girl juice drug). Nothing more, nothing less. He's trying to make the best out of it.
>>
>>100176859
mahiro loves being a girl THOUGH she got used to it really quickly
>>
>>100176873
Possibly so, but it's likely that getting social contact helped him much more.
>>
>>100176118
Use rust, it solves a whole lot more than just memory bugs. If you were trying to fix all of C++'s problems without the burden of backward compatibility, you'd end up with rust. Your first project will probably have a bunch of `unsafe` in it, but when you get the hang of it you won't need it anymore.
>>
>>100176938
Rust has gay keywords and syntax thoughever
It should preserve the syntax and keywords of C while still cleaning up all the gay retarded shit C did
>>
>>100176911
she turned into a much better person in all aspects so i think it's safe to assume that it is natural for her to be a girl
>>
If your C code is full of segfaults and your response is "I'll switch to Rust" your Rust code will be just as bad. Consider figuring out why your C code is segfaulting everywhere and fixing it first.
>>
Rust has three major mistakes:
>Cargo
>not having a ?: operator
>using :: as namespace separator
>>
>>100176760
>white man's language
I don't want to become a poor Walmart employee named Peter
>>
>>100176966
Fuck off troon, stop infecting animes with your mental illness. YWNBAW
>>
>>100176999
You chud do realize that this is literally the plot of the anime?
>>
>>100176999
it's okay to be in denial anon
no need to get so worked up about it
you'll figure things out eventually~
>>
>>100176962
>unsigned long long instead of u64
Rust has better keywords. Its enum type is also far better than anything in C, and it has the syntax to both check what type it holds and access the inner value at the same time with `match` and `if let`. Iterator methods are also better than anything in C languages.
>>
>>100176999
>infecting animes
>literal tranime OP
this thread would already be deleted from >>>/a/
>>
File: 1705272945095533.png (258 KB, 512x512)
258 KB
258 KB PNG
>>100176118
Rust's advantage is enforced memory safety without a garbage collector. Nobody should be writing in languages that do not enforce memory safety so good on you, but Rust is probably overkill for what you're doing and as >>100176277 suggests Go would be a lot better. You really probably don't NEED the performance boost of Rust over Go
>>
>>100177039
>anime thread deleted from /a/
what
>>
>>100177069
tranime*
>>
>>100177034
Why does Rust have keywords like let and not just have type declarations followed by the variable name like a normal programming language
I fucking hate Pyjeets so much it's unreal
>>
>>100177064
>things must be le forced!
>>
>>100177103
because it's easier to parse, have you tried parsing C++ before?
>>
>>100177004
>onimai is ackshually about my heckin valid trans rights and how mahiro actually discovers xer true self as a troonx latinx blaque BIPOC BLM queer womynx
Fuck off and go back to /tttt/
>>
>>100177128
>yes i watch tranime
>no it's not actually about trannies!!! im not a tranny!11!11!!!!
anon what are you smoking
>>
>>100177013
Shut up troon, femboys are cuter and far less delusional. None of us want you polluting our spaces.
>>
>>100177150
i can call myself a "hrt femboy" if it makes you happy
it doesn't really matter
>>
File: 1699945966854250.png (279 KB, 1280x554)
279 KB
279 KB PNG
>>100177107
memory safety is important and even if you personally know how to avoid making retarded memory mistakes, languages are for anyone who wants to start using the language and together a language without memory safety creates massive security problems when adopted by any decent amount of people.
>>
>>100177171
It does matter because we don't chop off our dicks and start gaslighting ourselves into believing we are something we aren't
Most femboys aren't even on HRT and still look far cuter than most of you drug-riddled monsters
This is something troons will never understand and why we never want you morons in our spaces
>>
>>100177207
safety isn't important in my house
>>
>>100176760
>white man's language
That would be HolyC, and you are a nigger
>>
>>100177224
fyi i dont really care what people call me, i never say shit like "my preferred pronouns are she/her" or whatever that's cringe desu

anyways see you in a few years when you start balding
T is no joke
>our spaces
what spaces? porn websites?
>>
>>100176118
>fucking tired of segfault bugs in my C project
lmao stupidity problem
>>
>>100177288
>i never say shit like "my preferred pronouns are she/her" or whatever that's cringe desu
Maybe you aren't as bad as I thought, but that's still just one thing
>>
No joke though, 98% of /g/ would take gender-changing drugs if they could do it in private.

Not up for debate. Check em.
>>
>>100176277
Go's community is full of midwits, grifters and people who dont poo in a loo
>>
"Go is for Googlers. . . .They're not capable of understanding a brilliant language" - Rob Pike
>>
>>100177477
Go is a shit language and is inferior to C++ (the very thing it was made as a criticism of) in every way
>>
>>100177103
>not just have type declarations followed by the variable name like a normal programming language

I swear so many idiots on /g/ have just passed their first CS 101 class and assume their favorite language got everything right.

Let's ignore the headache with parsing. Have you ever had to use define a variable that had a complex type? Like a closure? How does C++ solve this? Oh the auto keyword? Now every C++ codebase uses auto. What is the difference between auto and let? If C++ has already conceded auto is superior, why would Rust go BACKWARDS? Imagine releasing a language in 2024 that didn't have the equivalent of auto in a staticly typed language. That is essentially what you are arguing for.

>>100176118
If you can't write C without constantly hitting segfaults, you will have a terrible time in Rust, as the compiler will prevent you from compiling your shit code and you will have no idea how to fix it. Rust is 1000x easier if you know basic memory management.
>>
>>100176277
Gos community is somehow even worse than Rust’s.
>>
>>100177465
Proof? I see no reason to think this
>>
>>100177584
Came to me in a dream.
>>
>>100176118
Don't listen to them and don't use go, imaging a language that can't even do conditional compilation, the only thing you can make conditional is a whole file, it is painful as fuck.
>>
>>100177683
>whole file
>painful
you're the type of retard that litters all code if #ifndefs and need to kill yourself
>>
>>100177782
doing simd without ifdefs or introducing significant perf overhead is nontrivial
>>
>>100176118
mahira is not a troon (despite what troons may say), and gender bender anime and manga also aren't troon related (despite the fact that troons are obsessed with them due to their sissy fetishes). i wish we could go back to the times when gender bender weeb shit could be discussed without a bunch of obnoxious LitErAlLy mE'ers flying in from the top ropes at every opportunity
>>
>>100177544
>t. java troon
>>
>makes shitty code
>gives up
LOL
>>
>>100177544
>Auto closures
Fuck that. It's like every time they add a C++ they have to have a comity decide what the worst possible way to do it is.
>>
>>100176118
Rust basically only does one thing implicitly - autoderef
>>
>>100177064
>Rust's advantage is
>reference counting, a technique as old as computer research
Wow.
>>
>>100177103
Even C has auto now. (C23 changes it to C++'s meaning.)
>>
>>100177782
Not in rust no.
Also is you want to target cross-platform you don't really have a choice with c++.
Rust is the superior choice of the two.
>>
>>100176118
everyone i speak to about rust tries to get me to wear thigh highs, what's up with that?
>>
File: 1692678968447719.png (673 KB, 1200x900)
673 KB
673 KB PNG
>>100180900
thigh highs are unironically really comfy
there's the meme that they constrict your legs increasing blood flow to your brain but honestly they're just comfy and look really cute
>>
>>100181251
Fuck...I've been writing rust lately and I kinda want those
>>
File: +1000.png (325 KB, 618x624)
325 KB
325 KB PNG
>>100177333
>>100177288
congratulations anon you've managed to be declared "one of the good ones" on an anonymous image board how do you feel?
>>
File: horse.gif (3.64 MB, 288x480)
3.64 MB
3.64 MB GIF
>>100178908
>gender bender anime and manga also aren't troon related
>>
>>100176118
>OK, fine. I'm fucking tired of segfault bugs in my C project, I'm considering unironically using Rust for the next one.
legitimate skill issue, segfaults are the easiest C bugs to catch (most can be caught at compile time).
>>
>>100176243
r/rust on Reddit is unironically far better than this place.
People bitch about that Reddit and Rust is politics here but r/rust is completely technical. No one there brings any politics into the matter and it's purely about programming in Rust.

>>100177064
O.p. is literally programming in C.
>>100180284
Rust doesn't use reference counting. Well there's a reference counting pointer type one can use but one can define that as a library thing everywhere.

There's no particular value that counts references in Rust that is maintained at runtime.
>>
>>100176995
Cargo is arguably one of Rust's best features.
The ternary operator is totally unnecessary in Rust given that if statements are valid expressions.
:: is an ugly operator, though Rust is hardly the first to use it. I do think that Java and C#'s approach to just use . for both namespacing and field access makes more sense, though I'm not certain how much more complicated that would make a parser.
>>
>>100182307
For a large enough project (i.e. tens to hundreds of thousands of lines), they may not be so easy to catch. Especially if they only happen in very specific circumstances.
>>
>>100182494
So?
>>
>>100182330
Rust does use reference counting for all "complicated" (generic) cases.
>>
>>100182348
let x = if <cond> { shit } else { shat };

Is annoying verbose though.
Honestly, Rust should actually not have an if-statement and only a terninary operator but instead of an if statement if should have a cond statement, as in use the terniary for simple one-liners and:
cond {
<cond> => <arm>,
<cond> => <arm>,
<cond> => <arm>,
}
For anything more complex which is far more readable than if/else if type stuff.
>>
>>100182563
Like what, where does it store the count and under what conditions does it update this counter?
>>
>>100182494
if you're too lazy to compile with -Wall -Wextra, just run
valgrind bin/project
>>
>>100182601

let x = match val {
y => { arm },
z if cond =. { arm },
_ => { arm }
}


If you have only one condition to check, an if statement is slightly more verbose than a ternary operator, yes. If you have more than one condition to check, however, match statements are much more powerful, and you can absolutely use them as expressions.
>>
>>100182803
Match statements don't execute on the first truthful statement and you can't possibly be advocating for

match () {
() if <cond> => <arm>,
() if <cond> => <arm>,
() if <cond> => <arm>,
}

To achieve this. I'd sooner write a macro.

The issue is more so that I feel:

if <cond> {
<arm>
} else if <cond> {
<arm>
} else if <cond> {
<arm>
}

Should never occur in any code. It's harder to read than even the match example.
>>
>>100182861

>Match statements don't execute on the first truthful statement
Yes they do. Match statements execute the first arm that matches the expression. Also, you should not match on unit like that. You want to encapsulate the conditions you are checking as some sort of value or set of values.
>>
>>100182956
Yes, matches an expression, which is different than executing an expression and checking whether it's true. You know that conditionals can even have side effects right?

You could even in cond execute the exact same impure function three times, which might return a different boolean based on some internal state it updates.
>>
>>100183048
Including side effects in your conditional like that sounds like a very bad way to program.
>>
>>100183068
Obviously, I'm simply pointing out that match isn't comparable to what I'm describing. Cond evaluates an expression, it doesn't test if something is identical to some other value.

The way to make it identical is the other example I gave, which is obviously unnecessarily verbose.
>>
>>100182601
>Is annoying verbose though.
not really. you don't get much out of shorthand, same with postfix operators
>>
>>100182861
what is so hard to read about a bunch of elifs? serious question
>>
>>100184186
when you have nontrivial amounts of code between the conditions
>>
>>100184196
then it's hard to read with match too surely
rust is nicer and certainly more expressive than c, but this aspect of it isn't particularly more or less readable in either language
>>
>>100184208
>then it's hard to read with match too surely
no, because all the conditions are on the left side
>>
>>100182494
I have projects that are 20,000 lines and I just use policy patterns everywhere. The constructor/destructor for the pattern will often just be for logging so whenever I get a segfault I know where it's occurring.
>>
>>100176811
>thoughever
Why is 1 person forcing this meme
>>
>>100184310
autism
>>
>>100184186
The conditions for one don't align because the first one takes only “if” not “else if” but because there's space under it in this case it's just less clear. Like seriously, what's easier to read:

let comparison = if n > 0 {
Positive
} else if n == 0 {
Zero
} else if n > 0 {
Negative
};

let comparison = cond {
n > 0 => Positive,
n == 0 => Zero,
n < 0 => Negative,


It's a simple contrived example with not much going on, but it shows clearly which one looks more immediately obvious to read. This only gets worse with more arms to test for and more complex branches and conditions.

Lisps have a cond clause like that, and pretty much no one uses the “if/else if” which also exit for anything but a simple terniary operator like syntax on one line where cond is indeed too verbose.
>>
>>100182616
>Like what, where does it store the count and under what conditions does it update this counter?
it does not have any "invisible" refcounts if thats what you mean but rust programmers constantly throw RefCell and ARC (Atomic RefCell) at problems to make the borrow checker shut up
>>
>>100184597
Yes, like I said it has library reference counting pointers like any language can have. These are purely library.

And no they aren't constantly used at all. Most codebases never see use them.

Also, you probably mistake refcell with Rc here. To be clear Arc and Rc don't stand for refcell but for referenc-counter, RefCell is an entirely different datatype that allows for interior mutability.
>>
>>100184597
>someone shitting on rust doesn't know what he's talking about
every time
>>
>>100184669
Yeah, kind of.
It occurs to me that when people in this and other threads say that Rust is “handholding” them they simply don't understand the semantics of the borrow checker and couldn't make their code comple.

There are some uses to Rcs, or simply raw pointers to be able to create a reference to an owning struct inside of an owned struct which has some uses but I feel people mostly just don't understand affine type systems.
>>
>>100176118
naka-dashi Mahiro.
>>
>>100180900
best colours for programming socks?
>>
>>100184793
Blue and white or pink and white obviously
>>
>>100177118
No, but I have parsed C before and it's not hard at all
>>
>>100180900
>>100184830
I use blue/white on one leg and pink/white on the other, the asymmetry is particularly pleasing to me and symbolises my bipolarity :3
>>
>>100177465
No digits, therefore false.
>>
>>100184850
Post thighs slut
>>
>>100184858
Sorry last time I did my boyfriend got really mad at me, go dig it up in the archive
>>
>>100176118
use go or zig
>>
>>100184900
>go fag
how about you go fuck yourself and die
>>
File: the absolute state.png (198 KB, 1144x491)
198 KB
198 KB PNG
>>100184745
>>
>>100177103
>baby duck syndrome
Unless (you)'re a computer program, it literally doesn't matter whether the type or variable name comes first.
>>
>>100184745
>NOOOOOOO CHAINSAW MAN, JUJUTSU KAISEN AND OSHI NO KO ARE STUPID ANIME!!
This but unironically
>>
>>100176118
You should use a real programming language, like Python
>>
>no fun allowed
>>
>>100176118
You make these threads every day. Why don't you stop making these threads and make something in rust instead?
>>
>>100182330
>>100176118
>>100176243
These are all the same fag replying to himself to appear like there's some organic discussion here. He makes these threads all the time.
>>
>rust thread
Tranny kill yourself ACK-
>>
>>100176118
Have you tried not using raw pointers?
>>
>>100176995
>>Cargo
literally how it's bad at all? makes dependency management a breeze by handling pulling, linking and building.
>>
>>100176118
Rust is modern C++ done right.
>>
>>100176118
Are there any actual statistics on rust having far less bugs etc? I get it for critical code to prevent buffer overflows etc as i think that's what it was developed for iirc. But is it actually going to produce more maintainable and more bug free codebases? That syntax looks fugly as hell and hard to wrangle. Much more tooling and infrastructure available for C/C++, can't you just enforce really strict coding standards or -Wall or something for your project?

Are we sure this is not just another case of "sounds good in theory" but not in practice/implementation?

https://youtube.com/watch?v=hBjQ3HqCfxs
>>
>>100186269
https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html
>>
>>100186288
Looks good for preventing exploits like i said, that's what it was designed for. But how about everything else? Maintainable code, other bugs which are not security related?
>>
File: file.png (849 KB, 1200x900)
849 KB
849 KB PNG
>>100186324
https://youtu.be/6mZRWFQRvmw?t=27012
>>
>>100186324
Dunno about statistics, but Rust does make it a lot easier to do avoid bugs in general if you're using a "types as contracts" approach to programming.
>>
>>100186403
go is for niggers thoughever
>>
>>100186251
Rust would be good if it had more C style syntax like the return type in the function and the type declarations instead of using gay shit like let and var
At least C/C++ uses auto sparingly
>>
>>100186464

>Rust would be good if it had more C style syntax like the return type in the function and the type declarations
Baby duck syndrome.
>gay shit like let and var
There is no var keyword in Rust. You are thinking of JavaScript, which uses both let and var.
>At least C/C++ uses auto sparingly
The auto keyword is not typically used sparingly in modern C++.
>>
>>100186403
Interesting. Dunno if I'm totally convinced. But interested enough to look into it some more for the next time i write low level code. Got to write some logic for a voxel renderer for the CPU part soon. Got anything else to convince me with?

>>100186424
>That one anon who uses thoughever
This is just namefagging at this point
>>
>>That one anon who uses thoughever
he's not me althoughbeitever
>>
>>100186525
there is more than anon using "thoughever" thoughever
>>
>>100182299
>gender bender anime: guy actually becomes a girl
>troons: guy chops his dick off to imitate a girl
Yes, they are very unrelated.
>>
have you tried address sanitizer? you should be able to just add -g for debug info (for the source line info) and -fsanitize=address for the address sanitizer and it will literally tell you the exact line of source where you wrote or read out of bounds, or whatever fuckup you made
if you can't tell the issue from there your problem is bad programming and debugging skill not C and rust won't help you, but this is probably a bait thread anyway
>>
File: 1711308963095973.png (294 KB, 1498x1119)
294 KB
294 KB PNG
>>100176277
Rust is better than Go in every way.

>>100176118
Once you get the borrow checker it will be very hard to switch back to other languages, because the borrow checker make some things really trivial to do and it frees up a lot of cognitive bandwidth. Go is nice, but rust is simply better, you can do anything in rust that you can with Go, and the only reason people recommend any other language for software development these days is because they still think the borrow checker is somehow a limitation that you have to work around, when in reality it is simply an extremely helpful tool and you stop thinking about it after a while.

I will say, it took me 3 tries for it to really land, but now I've been using the language non stop for like 4 or so months and I haven't had this much fun programming since I was a teenager. The language is so expressive I unironically replaced python with it for quick adhoc programming at work. Rust has a package manager, so any functionalities you get in go, python, etc. probably have equivalents in rust.

The only real gripe I have with rust is that it doesn't read C natively. I kind of get why they didn't do it, but I think that's retarded, especially because it's an LLVM backend. I hate having to rely on third party bindings.
>>
File: 1714142249154.png (30 KB, 849x300)
30 KB
30 KB PNG
>>100176118
Clippy and the error lens extension are fucking godtier for working with rust.
>>
>>100189826
this is go thoughever?????
>>
>>100176118
>tranime
>"i consider using rust"
Like clockwork
>>
>>100176118
Just use lua
>>
>>100176760
>>100176811
>>100176819
>>100176859
>>100176873
>>100176911
>tranime
>/g/ay
Checks out
>>
>>100176118
why not use go?
>>
>>100176118
> it's the daily rust shill thread containing things that never happened
hilarious

>>100189759
>Once you get the borrow checker it will be very hard to switch back to other languages,
> cognitive bandwidth
> wall of schizo shit
and this is why rust trannies have no credibility whatsoever.
>The language is so expressive I unironically replaced python with it for quick adhoc programming at work
we all know that this never happened, nor does anyone believe you've ever had a job. and no, sucking cocks in public toilets via glory holes isn't a job.
>, but I think that's retarded, especially because it's an LLVM backend.
this is yet another example of why people think rust trannies are fucking idiots.
>>
>>100190498
GO: Controlled by a megacorp that uses it internally and has every reason to want it to spread and work well

Rust: Controlled by a community of political nerds who may create new rules any time they feel like
>>
>>100176118
ywnbaw
>>
>>100176118
use valgrind
>>
>>100176118

Oh, finally a Rust thread

https://lngnmn2.github.io/articles/like-haskell-but-imperative/
>>
>>100191143
> Rust is like Haskell, but imperative
What a fucking troll. Or they're delusional.
>>
>>100191427
The writer has never seen a language with a Hindley–Milner type system before I suppose.
Traits are a poor man's type classes anyway, where are my higher kinded traits?
>>
>>100176118
Well, if you are struggling this much with C already, Rust is probably going to be difficult for you.
But, if you go through it, you will learn how to write good, provably correct code, and you will become a better C programmer as well. You don't have to ditch C completely either, you will still need it, even if just to write a C ABI interface for your library.
>>
>>100177103
Because type is deducted in >99% of cases.
Also parsing.
>>
>>100184834
C doesn't have generics. It's types are usually simple(unless they are the function pointer nightmare).
Also not every type in Rust/C++ have an explicit, canonical form. Lambdas create anonymous types.
>>
>>100176968
This.

Getting gud at C makes you a elder-tier programmer. Rushing off to a language with training wheels does not. Your code segfaults all the time because you don't understand what's going on.
>>
File: ack.png (511 KB, 969x555)
511 KB
511 KB PNG
>>100176118
YWNBAW, your brain is male and HRT doesnt make a difference
>>
File: 1683031503223399.png (36 KB, 220x179)
36 KB
36 KB PNG
>>100186214
Gee, I wonder what could possibly go wrong with pulling in hundreds of untrusted dependencies.
>>
>>100191596
actually no, I have seen a study showing that HRT can change the shape and structure of the brain to be more female

so, HRT might make you worse at programming, and manipulate, what you are interested in, or you sexuality. it's super strong stuff. they give it away like candy without fully informing people of the potential consequences and side effects.
>>
>>100192467
yes a lot of sexual dimorphism in the brain is based on androgen receptors
however, HRT cannot reverse the effect of the SRY gene on dopaminergic neurons (see the studies linked)
HRT can make the brain more feminine, but it will always be a male brain (see above)
>>
>>100176118
Low testosterone males can't visualize pointers in their head. Rust was made for your type.
>>
>>100193116
C programmers think "visualizing pointers in their head" means "int* " vs "int *"
>>
>>100193147
>can't visualize pointers
>mocks those who can
How would you feel if you didn't have breakfast this morning?
>>
>>100193305
I had breakfast in the afternoon.
>>
>>100193305
i dont understand? i did have breakfast this morning, why are you telling me i didnt have breakfast this morning??
>>
>>100177207
>memory safety is important
Just build your program in 32 bit mode, allocate the maximum amount of memory you can at program start, and sit back and know that every memory access is guaranteed to be safe.



[Advertise on 4chan]

Delete Post: [File Only] Style:
[Disable Mobile View / Use Desktop Site]

[Enable Mobile View / Use Mobile Site]

All trademarks and copyrights on this page are owned by their respective parties. Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.