Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-4041-8081-120121-160161-200201-240241-280281-320321-360361-400401-440441-480481-520521-560561-600601-640641-680681-720721-760761-800801-840841-880881-920921-960961-10001001-

Why browsers are bloated

Name: Anonymous 2014-07-27 0:20

https://github.com/WebKit/webkit/blob/master/Source/WebCore/platform/Scrollbar.cpp
https://github.com/WebKit/webkit/blob/master/Source/WebCore/platform/win/ScrollbarThemeWin.cpp
Let's reinvent the fucking scrollbar, which every goddamn platform with a UI already has, and make it behave subtly different from the native one!

Right-click a native scrollbar in some other app:
- Scroll Here
- Top
- Bottom
- Page Up
- Page Down
- Scroll Up
- Scroll Down

Right-click a scrollbar in Chrome:
- Back
- Forward
- Reload
- Save As...
...

Right-click a scrollbar in Firefox and Opera:
Absolutely fucking nothing happens!

What the fuck!? How did these terminally retarded idiots get involved in creating one of the most important pieces of software to the average user?

Name: Anonymous 2014-07-27 9:03

SOFT_LINK(uxtheme, DrawThemeBackground, HRESULT, WINAPI, (HANDLE hTheme, HDC hdc, int iPartId, int iStateId, const RECT* pRect, const RECT* pClipRect), (hTheme, hdc, iPartId, iStateId, pRect, pClipRect))
MICROSOFT QUALITY

Either way, the web standards are too bad and bloated to make a good browser. All you can do is wait until everything died its slow death and is replaced by the glorious decentralized Lisp Web.

Name: Anonymous 2014-07-27 9:11

>>2
Decentralisation is part of the cancer

Name: Anonymous 2014-07-27 9:20

>>3
Enjoy your NSA. What are you going to do if the /prog/ server goes down indefinitely tomorrow? If it was decentralized, you'd do nothing because it would have barely any effect.

Name: Anonymous 2014-07-27 9:22

>>4
I would take a back-up
Every decentralised model has failed and will continue to do so

Name: Anonymous 2014-07-27 9:25

>>5
And who would host it? Who would find it? What if the next administrator is lel-kunt?

Name: Anonymous 2014-07-27 11:28

>>3
Misspelling the "-ization" suffix is part of the cancer.

Name: Anonymous 2014-07-27 11:31

>>7
Fuck off murrifag, burger fucker

Name: Anonymous 2014-07-27 14:55

>>6

What if the currtent admin is lel-kunt!?!?

Name: Anonymous 2014-07-29 17:41

Name: Anonymous 2014-07-29 23:03

>>10
uzbl?

Uses WebkitGtk+ for rendering

Now look at the links in the OP again... all these stupid "minimalist" browsers are just a different UI with the same existing bloated rendering engine.

Name: Anonymous 2014-07-29 23:50

>>11-kun speaks the truth
luakit is better, but still a shit
We need something new

Name: Anonymous 2014-07-30 1:14

>>12
luakit
webkit based browser framework

Name: Anonymous 2014-07-30 4:01

>>11,12
What's so bloated about the rendering engine? Did you want a HTML engine that only supported HTML4 and CSS2?

Name: Anonymous 2014-07-30 4:08

HTML and CSS are bloated.

Name: Anonymous 2014-07-30 6:30

>>14
I want a rendering engine that doesn't reinvent scrollbars, for one thing.

Name: Anonymous 2014-07-30 8:07

Why do these idiots blabber about how a rendering engine is so terribly complex and monstrously huge? Why is rendering a web page any harder than rendering an app GUI? It's all just text and rectangles. OK, there also SVG and Flash, but there are plugins for that. Why can't anyone just take GTK or Qt and make a browser out of it?

Name: /lounge/ 2014-07-30 8:51

>>17
The rendering engine needs to interpret every piece of element within the HTML page. It also has to keep track of every element within each web page. This means your rendering engine has to keep track of a lot of information as well as render that information. If you want an example of the complexity of rendering documents with many individual elements, try looking at the source code of Scribus and have a look at the data of a Scribus document.

Name: Anonymous 2014-07-30 11:56

Chrome is even worse - the minimise/maximise/close buttons are actually bitmap images! (http://src.chromium.org/viewvc/chrome/trunk/src/ui/resources/ )

They've also been reinventing the scrollbars too; it looks like WebKit uses the native drawing routine for scrollbars, but Chrome wants to reimplemnt that itself: http://my-chrome.ru/2014/01/about-scrollbars/ (from right to left: natively drawn scrollbar, Chrome-drawn half-broken scrollbar, Chrome-drawn slightly-less-broken scrollbar.)

>>17,18
They're complex because the monkeys who write them are doing it wrong. I've been (slowly) working on a CSS box renderer and the code is actually quite simple and straightforward once the algorithms have been figured out.

The big rendering engines are written by large teams with deadlines so there's necessarily the whole OOP bloat (all the ways to make software easier to write for large loose teams but creates ridiculously inefficient enterprisey designs: "separation of concerns", "information hiding", etc.) and less time spent thinking about the simplest way to do something, which also adds to the complexity.

On the other hand I'm working alone and not trying to make any deadlines, so I can spend as much time as I like thinking about how to design this thing and have it as monolithic as it needs to be. For example, the document is tree-structured so it seems to suggest a lot of algorithms are going to be recursive; I also thought at first this would be how the line layout (including wordwrap) should be done, but then realised just how much state would need to be passed around and that doing it recursively seemed far too complex.

If I was someone working as part of a team on a project with a deadline, I might've just accepted the complexity at this point, maybe even tried to hide it behind a design pattern (which just makes things worse overall!) or made several classes, and wrote the code. This is how most of the existing rendering engines (and the bulk of software) was written.

Instead I thought about it more and realised that recursion is not the best way to do it - the boxes do form a tree structure, but recursion isn't needed to traverse them and calculate linebreaks since that requires a more linear view of the data. I ended up with an extremely elegant and simple algorithm based on a few loops and pointer following. It can't be written without using goto either, so a more traditional programmer probably would've never figured it out. The implementation of the core traversal and linebreaking decision is only a few dozen machine instructions.

Rendering a document is overall a complex task, but if you can consider all that complexity in large pieces, and condense them into a simple algorithm, then the code does not need to be complex. In contrast with the traditional notion of breaking problems into simpler pieces and then combining them together to create a more complex whole, I'm taking complex pieces of the problem and combining them together to create a simple whole. It's somewhat like procedural generation in the demoscene.

Let's make this thread the continuation of http://dis.4chan.org/read/prog/1321853871/

Name: Anonymous 2014-07-30 13:12

>>19
Can you post the code? I'm interested in your solution and a low-resource browser.

Name: Anonymous 2014-07-30 13:19

>>18
How is this thread for /lounge/?

Name: Alexander Dubček 2014-07-30 14:03

<style type="text/css">
dubs {
check: always;
}
</style>

Name: Anonymous 2014-07-30 23:08

>>21
Sorry, I forgot to deal with my thread redirection service.

Name: Cudder !MhMRSATORI 2014-07-31 12:00

>>19
That was me. Name field somehow disappeared...

>>20
Here's most of the interesting part (non-recursive CSS box tree traversal.) Linebreaking is just looping through the text, updating the break positions and width as you go, and splitting upwards when the line becomes too wide. There are some special cases like font-family: monospace and white-space: pre/nowrap/pre-wrap that probably don't need examining every single character. The upward-splitting code is also non-recursive, it's another big loop. Then the x/y is adjusted appropriately to the next line and the algorithm continues exactly where it left off - no "backtracking" or wasted work.

; esi = cur_y edi = cur_x
; ecx = avail_width
; edx = last_bkpt linebreaking info
; ebp = containing block box
mov ebx, ebp
xor esi, esi
line_loop:
call set_widths ; sets edi and ecx
mov ebx, [ebx+cssbox.first_child]
or ebx, ebx
jz done
loop1:
mov al, [eax+cssbox.type]
cmp al, CSB_TEXT
jnz not_text
; <code omitted>
not_text:
cmp al, CSB_INBK
jnz not_inbk
call cssbox_extw
add edi, eax
cmp edi, ecx
jb check_sib
cmp [ebx+cssbox.prev_sibling], dord 0
jz check_sib
; <code omitted>
jmp loop1
not_inbk: ; CSB_INLN
call cssbox_lncaw
add edi, eax
mov eax, [ebx+cssbox.first_child]
or eax, eax
jz exit_box
mov ebx, eax
jmp loop1
exit_box:
call cssbox_rncaw
exit_loop:
add edi, eax
check_sib:
mov eax, [ebx+cssbox.next_sibling]
or eax, eax
jz go_up
mov ebx, eax
jmp loop1
go_up:
mov ebx, [ebx+cssbox.parent]
cmp ebx, ebp
jnz exit_box
done:


For comparison, the wordwrapping and box traversal algorithm in WebKit is, I think, somewhere in here... or maybe spread across many of the other several dozen files in the directory: http://trac.webkit.org/browser/trunk/Source/WebCore/rendering/InlineFlowBox.cpp

And for your amusement, here is a WTF I found in the HTML parser:
https://github.com/WebKit/webkit/blob/master/Source/WebCore/html/parser/NestingLevelIncrementer.h

Name: Cudder !MhMRSATORI 2014-07-31 12:05

Also noticed WK uses floating point for positions!

Who thought that was better than fixed-point? No one needs webpages several billion pixels high...

Name: Cudder !MhMRSATORI 2014-07-31 12:07

s/mov al, [eax+cssbox.type]/mov al, [ebx+cssbox.type]/

Name: Anonymous 2014-07-31 12:15

>>19
If I was someone working as part of a team on a project with a deadline, I might've just accepted the complexity at this point, maybe even tried to hide it behind a design pattern (which just makes things worse overall!) or made several classes, and wrote the code. This is how most of the existing rendering engines (and the bulk of software) was written.

While it's fantastic that you've found an elegant solution to parsing and rendering HTML pages, the rest of the world generally doesn't have the time to work as you do. This is why open source corporate projects (like any other corporate software project) take the worse is better approach to programming - "if it runs well enough then we can ship it". Maybe if you write a web log detailing your solution together with your analysis of the Gecko engine, you could send a notice to the Mozilla engineers who might pick up a few ideas to put into Gecko.

Name: Anonymous 2014-07-31 13:02

Name: Anonymous 2014-07-31 15:24

>>26
Shalom!

Name: Anonymous 2014-07-31 17:10

>>28
It's not open source quality, it's Apple quality. With closed source it would be the same except you wouldn't be able to see and appreciate the beauty of ENTERPRISE SOLUTIONS.

Name: Anonymous 2014-07-31 18:41

>>27
In a corporate environment, it's much easier to appear productive when you're furiously banging away at a keyboard and producing lots of code. The guy who just sits there thinking doesn't look like he's doing anything. That's why you get shit like classes containing a single variable and two trivial methods, because "I wrote ten classes today" sounds like you're getting a lot of things done while "I added a few variables and functions" doesn't. I don't work for Apple but a lot of other places love to use metrics like SLoC to measure productivity, which ends up encouraging this WTF-ery.

>>28
adjustmentForChildrenWithSameLineHeightAndBaseline
It's like I'm really reading Java!

Name: Anonymous 2014-07-31 21:06

>>31
It's clear and descriptive of its purpose. There is no better way to clearly describe such a complex idea short of inventing a new word to describe it.

Name: Anonymous 2014-07-31 22:35

>>31
The guy who just sits there thinking doesn't look like he's doing anything.
"I wrote ten classes today" sounds like you're getting a lot of things done
The volume of code output doesn't matter so much as progressing through the list of specifications in the world of business paid programming. A 50 line procedure that is functionally equivalent to a 200 line procedure doesn't matter to anybody but programmers. If the 200 line procedure was quicker to reason and write, that's what's getting shipped.

A thoughtful programmer who spends all day to remove 30 lines of code from the codebase (in order to make the logic cleaner) is less productive than a workhorse programmer who spends all day going through sections of the specification with masses of code - the brute force programmer is actually making progress and software stakeholders value this more than clean code. This doesn't mean that all progress is good progress. Progression without a reasonable amount care can lead to various software and development problems in the future.

The world of programmers for hire is a balancing act that leans towards people who achieves the most within the smallest amount of time.

Name: Anonymous 2014-08-01 2:57

>>33
If the 200 line procedure was quicker to reason and write, that's what's getting shipped.
Your arguments is fallacious, because larger codebase impedes maintainability in the long run. I.e. saving $1 today can easily cost you $10 tomorrow. It is like debt, with only difference is that you can borrow more to repay current debt.

Name: Anonymous 2014-08-01 6:06

>>34
debt
Shalom!

Name: Anonymous 2014-08-01 7:27

A web browser could easily be implemented with just few lines of bash/awk/sed/curl. There's no way to justify the millions of lines of code that are in modern web browsers.

Name: Anonymous 2014-08-01 8:51

to justify is to be an ~idiot~

Name: Anonymous 2014-08-01 10:40

6 000 000 source lines of code

Name: Cudder !MhMRSATORI 2014-08-01 12:18

>>27
The amount of time I've spent on this algorithm in total probably does not exceed a day at most; I'm normally very busy with other things. I don't think "worse is better" applies here, since that usually leads to much simpler designs which don't handle particular edge-cases well (e.g. Unix), instead of grotesque complexity.

>>31,32
If you ever find yourself needing to describe such a complex idea, you should probably reconsider your approach. From a quick glance it appears to be for moving boxes up/down depending on vertical alignment, something which the code manages to make extremely bloated despite it being a very simple idea:

1. Collect the maximum height of all the boxes on one line, while laying them out; this will be the line height.
2.a Top-aligned boxes don't need to be moved.
2.b Centre-aligned boxes have (maxHeight - height)/2 added to their y-position
2.c Bottom-aligned boxes have maxHeight - height added to their y-position

The WK code expresses this too, but it's far more obfuscated and probably traverses the box list many more times than necessary - there's a function to do the first step mentioned above, but it traverses the whole box list. If layout has to traverse the box list already, why not compute the maximum height at the same time? The monkeys will spout things like "modularity" and "encapsulation", because they were so brain-damaged by their religious adherence to OOP dogma that they don't realise it's extra work both for them to write extra code, and the machine to execute it. They might also cry "premature optimisation", but this isn't any clever optimisation, it's common sense. To think otherwise is like driving to the store and back for each individual item you buy - absolutely retarded! Anyone sane wouldn't ever think of doing such a thing, yet put them in front of a computer, indoctrinate them with OOP religion, and this is what they'll do.

>>33
I don't see how using excessively verbose code with tons of needless indirection/abstraction and mind-numbingly-long variable names is in any way more productive. The same goes for reimplementing basic UI functionality and creating trivial classes - it's busy work, useless time-sinks to give the impression of being productive.

http://en.wikipedia.org/wiki/Muda_(Japanese_term)

Name: Anonymous 2014-08-01 13:07

>>39
Shalom!

Name: Anonymous 2014-08-01 13:23

Hey Cudder, is it true that you are a girl?

Name: Anonymous 2014-08-01 14:11

>>41

Xhe is halfway beetwen it

Name: Anonymous 2014-08-01 19:15

I always wonder why there are no more browsers using Firefox's rendering engine other than Firefox itself. There are a half-dozen webkit browsers. I don't like webkit. I wish there was something like luakit but with Firefox's rendering engine.

Name: Anonymous 2014-08-01 20:05

>>43
They stopped allowing other browsers using it or something, I guess they mixed the firefox and geeko code

Name: Anonymous 2014-08-01 23:45

>>44
Tons of browsers using Gecko besides Firefox:
http://en.wikipedia.org/wiki/Gecko_(software)#Usage

In the past, Gecko had slower market share adoption due to the complexity of the Gecko code, which aimed to provide much more than just an HTML renderer for web browsers.[19][20][21] Mozilla's engineering efforts since then have addressed many of these historical weaknesses.[22]

The Gecko engine also provides a versatile XML-based user interface rendering framework called XUL that was used extensively in mail, newsgroup, and other programs. Another reason for much of the complexity in Gecko is the use of XPCOM, a cross-platform component model.[23] However, its use has been scaled back.[24]

If Webkit is supposed to be the simpler alternative, I don't even want to know waht Gecko code looks like...

Name: Anonymous 2014-08-02 1:09

>>41

anal sex doesn't make you girl.

Name: Anonymous 2014-08-02 2:03

>>39
I don't see how using excessively verbose code with tons of needless indirection/abstraction and mind-numbingly-long variable names is in any way more productive. The same goes for reimplementing basic UI functionality and creating trivial classes - it's busy work, useless time-sinks to give the impression of being productive.
I don't think you completely got my point. I'm saying the world of paid programming values productivity a lot more than they value optimal design. Programmers who produce verbose code that achieves the specifications within a shorter timeframe are valued higher than programmers who take longer to produce optimal code and design. I'm not judging the value of this being good or bad, I'm just saying that this happens.

The same goes for reimplementing basic UI functionality and creating trivial classes
I am not the designer of Chrome and I cannot give any rationale why they chose to work this way. I can only assume they had a good reason to specify this as a feature.

Name: Anonymous 2014-08-02 2:45

>>47
I'm not judging the value of this being good or bad, I'm just saying that this happens.

You're trying to have your cake and eat it too. They're apples and oranges. Don't play sour grapes just because someone cooled your jets off.

Name: Anonymous 2014-08-02 4:27

>>48
You need to reduce your use of figurative language. I'm having trouble comprehending your message.

Name: Anonymous 2014-08-02 7:03

Name: Cudder !MhMRSATORI 2014-08-02 12:07

>>45
Gecko code is actually not as verbose and thus easier to read, despite there being far more of it; I think this is the equivalent of the WK InlineFlowBox above:
https://hg.mozilla.org/mozilla-central/file/a4f779bd7cc2/layout/generic/nsInlineFrame.cpp
https://hg.mozilla.org/mozilla-central/file/a4f779bd7cc2/layout/generic/nsBlockFrame.cpp

Theres's also a lot more comments.

>>47
Programmers who produce verbose code that achieves the specifications within a shorter timeframe are valued higher than programmers who take longer to produce optimal code and design.
Code needs to be input, and verbose code takes more time to write - even when using an IDE that autocompletes 40-character-long variable names. Verbose code also comes from overly complex design, which leads to writing more code than is actually needed. The total time spent on design and implementation is likely more than an approach of creating the simplest design that works, and writing the minimal amount of code to accomplish that.

Name: Anonymous 2014-08-02 17:32

>>51
Shalom!

Name: Anonymous 2014-08-04 6:23

>>41

Would you cuddle the cudder?

Name: Cudder !MhMRSATORI 2014-08-04 11:58

More insanity, this time from the Mozilla side:
https://bugzilla.mozilla.org/show_bug.cgi?id=630181

Put the complex quadratic-time text-wrapping algorithm of TeX into a browser? What the fuck!? I'm going to bet that 99.999% of browser users out there don't give a flying monkeyfuck about justified text. Just count up the number of spaces in each line, divide the width remaining by it, and add that to each one. Done. Fast and simple and good enough.

Name: Anonymous 2014-08-04 12:19

>>54
Shalom!

Name: Anonymous 2014-08-04 13:19

>>54
Firefox is a modern web browser, and that is a good idea. I don't know if it will be implemented but I think it will, eventually.

Name: Anonymous 2014-08-04 15:18

>>54
The person who filed that bug is not a developer and it's evident from the comments that the developers themselves don't badly want to implement it. Granted the Mozilla developers did seem to think that implementing a pixel accurate PDF engine using HTML5 canvas was a good idea...

Name: Anonymous 2014-08-05 7:59

>>54
:-/
I am so mad now

Name: Cudder !MhMRSATORI 2014-08-05 11:42

>>56
I bloody well hope not! How much energy (human and machine) needsd to be wasted on figuring out [i]where to split a line of text[/i}!?!?

In fact I am used to systems that do not even tr
y to split at whitespace. If the available width
is x columns wide, they would just split the li
ne at that position, no exceptions. Easy and com
pact and really not so hard to read if you're us
ed to it, but I don't think the majority will li
ke this, so for my browser I will compromise on
an algorithm that doesn't split words, but is no
t any more complicated than that.


When people read webpages, their primary goal is to consume the content, the information (no matter how vapid it may be.) The majority of them are not there to gawk at the linebreaking or font rendering, so any added complexity there for small improvements will be imperceptible and wasted for almost everyone. Don't even get me started on the idiocy of "smart" quotes, ligatures, and all that other extraneous shit.

Name: Anonymous 2014-08-05 12:56

>>59
Shalom!

Name: this shit it old 2014-08-05 14:51

>>11-14
Walk the thread, we've discussed netsurf, links2, jumanji, dillo, etc.. Cudder might enjoy Dillo.

If you still don't get it, stop using, supporting, and advertizing the larger market shares of web browsers.

>>36
So you are saying we should use Elinks, or adapting it with the cURL library? You still need to render colour. Unless you are seeking doing it VT100 max colours.

Name: >>10,61 !2l1ZW3Z9JI 2014-08-05 15:04

>>19
Shit, my old post are there. It's been 2 years. It feels so long.

Name: Anonymous 2014-08-05 15:30

Cudder, We need to open a gitlab to share code. I've been wanting to do this all my life:
This is also going to be the web browser that puts YOU in control. Per-site/per-domain/per-path settings for security and privacy; a UI that doesn't treat users like idiots by hiding everything;
http://dis.4chan.org/read/prog/1321853871/127

Do we use that tor-fossil repo we have here somewhere?

Name: od says 2014-08-05 17:00

the web has faaar grown out of control

really, how open is a protocol if you need a team of hundred programmers to implement it?

what is needed is a reset, a reboot to a more simple protocol. of course this will never happen but lets entertain the idea nonetheless.

a protocol that cannot be implemented by a programmer in his spare time over a week is not open, OKAY?

so let's go back and think about why all this shit has to be so complex, aside from encryption, does it really need to be? do we even need HTML anymore? haven't we LOOONG crossed the point at which it would be economical to just send images over the wire?

Name: Nice Squares 2014-08-05 17:02

>>64
it would be economical to just send images over the wire
Back to the imageboards with you, mister.

Name: Anonymous 2014-08-05 17:04

>>64
HTTPS is fine for it's multiple uses.

HTML needs to be done away with. ASCIIdoc or orgmode should be the markup standard. Images are fine. Animations are best suited to video now.

Name: Anonymous 2014-08-05 23:57

Name: Anonymous 2014-08-06 1:21

>>67
What's the point of a terminal app that isn't light on resources? Mad 1337 cred if you set it to green text?

Name: Anonymous 2014-08-06 2:33

>>67
http://acko.net/blog/on-termkit/

This is everything that's wrong with programmers today. They see something they find just a little difficult, and build an insanely complex system to replace it with an even more arcane set of rules and behaviour.

Name: Anonymous 2014-08-06 4:33

>>67
Node.js
Unix has bad usability
Stopped reading this shit. The author should go stick a broomstick up his anus.

Name: Anonymous 2014-08-06 5:51

>>67-70
The big problem I see with TermKit is the lack of a unifying concept for its interfaces. Unix terminal applications aren't powerful despite the shitty unstructured nature of byte streams; they're powerful because byte streams are easily mungeable. Layering HTTP and JSON over that just adds new complexity for applications to deal with (News flash! Not every application is a web app!)

People in the 70s and 80s also tried to make everything fit their preferred structured data paradigm (at the time I believe it was mostly records) and they failed then, too. Serialization formats come and go but the pipe marches on.

Name: Cudder !MhMRSATORI 2014-08-06 10:42

>>63
At this point it would probably be better to share ideas only.

>>64
really, how open is a protocol if you need a team of hundred programmers to implement it?
Maybe you don't. That's what I'm trying to do - find simplicity in complexity.

a protocol that cannot be implemented by a programmer in his spare time over a week is not open
Depends on what it does. There's justifiable complexity, and there's extraneous complexity. The former is fine, the latter is the problem.

>>67
:facepalm:

>>71
they're powerful because byte streams are easily mungeable
They expose the full power of letting the application interpret data as it wants to. The complexity and annoying failure modes of trying to enforce a type on the data make it a stupid thing to do - remember resource forks on old MacOS and the typed (text, binary, record, etc.) files used in old mainframe systems? Not surprisingly, they disappeared.

Name: Anonymous 2014-08-06 10:53

>>72
Not surprisingly, they disappeared.

Not entirely, they're just better hidden now.

Name: Anonymous 2014-08-06 11:46

>>72
Shalom!

Name: od says 2014-08-06 14:06

>>67
termkit seems like just more shit piled upon shit. really the opposite of the way to go imo.

>>72
simplicity? about how "open" the web is and from the looks of it, a few years from now everything will be unspiderable SPA's which only works in the last version of the big 3 "evergreen" browsers. And you'll only be able to ever find anything using one of two different search engines. they got us by the balls mate. you need big teams, big infrastructure, to even get started.

Name: Anonymous 2014-08-06 23:43

>>75
As far as I am able to tell this is the goal of the big three browser implementors. Not versioning standards like HTML5 can only make sense if you don't plan on anyone else ever implementing your "standard".

Name: Anonymous 2014-08-07 2:52

why does shitfox use rdf?
i read https://developer.mozilla.org/en-US/docs/RDF_in_Mozilla_FAQ but i could not understand a thing.

Name: Anonymous 2014-08-07 2:56

Name: Anonymous 2014-08-07 8:04

>>78
Basically, if you know CLOS, it's a half-arsed implementation of CLOS. RDF's are bookmark objects that can be printed and shared among lisp images.

Name: Anonymous 2014-08-07 19:13

>>72
At this point it would probably be better to share ideas only.
Why, you are publishing it soon? I really want to do the domain controls, cookie and temp file requests, esp. certs handling.

Unless you have that done already. CSS, I rather do something else, like Xlib instead, even Cairo.

IMHO, I want to ignore HTML5, ans just go with WHATWG.

Name: Cudder !MhMRSATORI 2014-08-08 12:50

>>75,76
That's why we need a new browser, one that isn't controlled by some large organisation, one which is compatible enough to view most information-oriented sites, maybe even some app-sites like YouTube or Fecesbook. Then figure out how to market it so that it appeals to the masses, making it spread widely. Encourage forks and customisations (it should be public-domain), so we might have several dozen different versions all based around the same core, but with subtly different UIs, extra features, etc.

This will be what can start the revolution - when the "web developers" realise that almost everyone's browser is slightly different, and that everyone likes their version because of their differences and is unwilling to change, hopefully this will make them more focused on content instead of styling, reduce unnecessary use of features for the sake of using them, and lead to a more accessible Internet for all.

Chrome gained marketshare because it was faster, easier to use in some ways, and still displayed existing pages well. What will be the "killer feature(s)" of The Next Browser? Being smaller and faster, completely pubic-domain and open-source, and easy-to-use but also powerful UI is what I'm thinking of.

The issue of search engine replacement is a whole different can of worms, let's not open that one here. Create another thread for it if you want.

>>77,78
RDF: Retardedly Demented Format.

>>80
Quite the opposite, actually; this is more like a thinking exercise with some coding involved, than the other way around - as discussed above, it's more important that you think and plan the design before writing any code. Since I'm targeting Windows, you might be more interested in thinking about writing efficient UIs on Linux with a minimum of dependencies - Xlib/Xt/Xaw does look like a good path to take.

Name: Anonymous 2014-08-08 13:06

Ha, remember when firefox was the lean fast browser? You know, back at version 1.

Name: I know! Make a new standard! 2014-08-08 13:29

>>82
I was about to reply that to >>81. She is describing the Mosaic NetscapeFirefox pretty damn well. How many gecko browser are there?

Marketing is what made Chrome today the highest market share.

Name: Anonymous 2014-08-08 16:01

>>83
She

Shalom!

Name: Anonymous 2014-08-08 16:10

>>81
Shalom!

Name: Anonymous 2014-08-08 23:08

>>84
Shalom!

Name: Anonymous 2014-08-08 23:22

>>85
Shalom!

Name: Anonymous 2014-08-09 0:19

>>81
I don't see how a simpler implementation can succeed on its own merits today. People will not switch to a new browser unless it is bug-for-bug compatible with their previous one. Gecko only succeeded because people began to move away from ActiveX. WebKit only succeeded because because Mozilla did not subsequently introduce many (any?) extensions of their own that saw wide adoption. I'd wager that WebKit/KHTML was fairly simple as well in the early days...

Bloat is the price of victory. This observation is applicable to other software as well.

Name: Anonymous 2014-08-09 0:23

>>88
Software for quality users instead of for the inferior low intelligence masses. Or just create software for you by you.

Name: Anonymous 2014-08-09 8:58

What will be the "killer feature(s)" of The Next Browser? Being smaller and faster, completely pubic-domain and open-source, and easy-to-use but also powerful UI is what I'm thinking of.

The next browser? mate by the looks of it you can just start thinking about the next protocol. Not even the nuttiest nut is going to be able to go without a client that renders his bank apps and does Flash. If we're to get in there it has to be from the side.

We need something in between IRC (decentralized, data oriented, native UI, "instant") and the Web (application oriented). With a strong focus on privacy and security. We can build this platform on top of HTTP for all I care but HTML5 has gots to go.

Name: Anonymous 2014-08-09 9:38

>>90
The protocol doesn't need to be built on top of HTTP. Just about everything can be sent over HTTP, so the final result can be layered on top of whatever you like.

What do you mean with native UI? No matter how you sensibly define it, IRC and the Web either both have it or both don't.

Also, the Web is not application oriented. Actually, the fact that it was never meant for this EPIC WEB APP shit is pretty much the biggest source of problems right now. It's questionable whether applications like that are actually desireable, anyway. With proper authentication and communication, most vital ones could be reduced to simple requests.

Name: Anonymous 2014-08-09 9:53

>>90
decentralized
SHALOM!

Name: Anonymous 2014-08-09 17:52

,:::::,...;;;:::::::,,,,,,::::::,::::;;::;::::::::::::::,::;;;:::::::::;:::::::::::::::::::::;;;;::;;::::::;''':;;;;;;;;;;:::::,,::::::,,:,:::::,::::,:,:::``:;;;;;;;;::;;::;::;;::::::;;:::;;;;;::
,:::::,,..,..,,,:::,...,,:::;,,..,;:::::::::::::::::::,,:;''';::;;;;;;;::::::,:::::::;:::::::::;;;::;;;::::;;;;;;;;;;;:::::;:::::::::::::,::::::,::;::::::..,;;;::;::;:;;;:::::;,,,:,::;;::;;:::::;
,;:;:,:,,,....,.,.......,,:::,.``,::::::::,::,:::::::,:;''';::;;'''+'''';;:;:,:::::::::;:::;:::;;;;;;;;;::;;::;;;;;:::,:;:;;::::::,,:::::::::::::::;;;;:::.,;:::::,::;;;;:;::::::,,,,:;:::;+'';;;::
.:;;;::,,::,,,...``.,,.,:,,,,,.`.::::::,::::,,::,:,,,:;;;;;:,:,,::;;;;;;;:::;::;:;::::;;;;;';:;;;::,,,:;;;;;::;;:::::,,:;:;:,::::::::;::::::;:::::,:::,,::::;;,.,,,:;:::::;;;;;;::::,,::::,:;'''';:
`.;''';;;';;;;:,..`.:,,:::::,,,.,;;:::,::::;::::::,.,:::,:;;::::,.::::::::::::::::::;:;;'';;;::;;;,,,,:;;;;;::::::;;:,:;;;:::;::::::;;:;::::;::::,,,,:,,:;:::,.`,:::::,:::::::;::;;;:,,:;:,,,:;;;':
`,:'''';;'';;'';;,..:,,,,,::,::,::;::,,:::;;::;;';,.,:;::::::;;:,`.::,,::::;:,,:::::;;::::;;::::;,:::,,,:;;;;::;::;;:::;;:;:;'''';;'''::;:::;;;:::::::::::,:,.,::::;::,;:::::::::;;:;::;;;';::;;:::
,:,:;;;'''+';:;:.`,:;:::,,,,,,,,:;;:::::::;::;''';:::,,::::,:;;;:.,:::,,,::;::::;:::::::::::,,:::,:;;:,,,:;;::::::;;';::::;:::;;'';;;::;;;;;;:::;;::::::;,,;:::::::::::::;:::;;;::::;;::::::::;;:::
;':,::;;'''';;..`.:'';;;,,,:,,,,:,:;:::;;;::;''''':::,,::::,:;;;:,::;::,,,,::::::::::::::::,,::::;;;:;;,,::::::;:::;;::,,,::::::;;;;;;;:;;:;';;;;;;::::::,,::::::::::::,:;';;;;';:,,;::,,::::;;::::
'',.::,:;;;;:.``,:;;';::;,::;;:;,,,:::;';;;;'';';';:;;::;:,:;:::::::;;::::,,,::,::::::::;:,,:::::::::,,::::::::;:::;:::::,,,:::::;;:;;;;:;;;;;'';;::;;:,,::;:::,:;;;;;:,::;;;;;;;;:::::,,::;;;';;:;
:;,.::..,;;,,`.,:;:::::,:;:;;'';;:::::::;;;;;;;;;';:;:,::::;;;:::::;;;;;;::::,,:::::::.,:,.,;;:::::::,,:;:;;::::::,:,,:;:::::;:::;::;:;;:;;;;:::::::::,:,::;;:::;;;;';;;::,:::;;;:;:::;;';;;::;;;;:
:;,,::::,':,,,,::;:;::::::::;;:::;;:;;;:::::;;;;;;::;::::::::;;::::::::;;::::,,::::::,.,:,.:';,,::::::;;;;;:;;;;;:::,,:::;:::::::::;;;;;;;'';::;::::::::::::;::::;''+';;';;,..,,,,,::;;'';';:::;;;:
::,,,,:;,::::,::::::;;:::;;:;;:::::::'+';,,:;;;:;::::,,:;;::,:;;::::::::::::;;,,::::::::,.,;;:,,.,::::::;;;::;;;;:;;;::::;:;:;::;::;;;::;;;::::;;::;:::::::::::::;;'+'''';;;:,...,,,:;;;;;::;;::;;:
::,,.,,,.,::::::::,:,,,::::::'';,:,.,,:;:,,:::;::';::::::;;:::::,:;;::::::::;;;:::::::::,.::::;',.,;::;;;'';;;;:::';;;;::::;;;:;:::;;;::;;;:.:;;;::::::::::;:::::::;;';';;;:;::,....,,::::,::;::::,
:,....,,,,:::,,,:,,,,,::::::;;;,......,.........,,,,..,,,,:,::,::;';;:::::::::;:;;::,,::;;;::::;;,,::;'+';;;;:,;;:;;;;;;;::;;:::;;;;;;;;;;;..:;;:;:::;:;:::;::;;:::::,,:,:;::::::,,,,:;;::::::,,:::
,;.,:,,:::::::,,,,,,:::::::::;;:,,,,,,,,..........,,......,.,,,,..,..,,,,,:::::;;;:.,:::;;;:::::;;,,:;'';;;;:::;;;';;;::;:;::::;;;;;;;;;;:.`,::;::::;::;;::::;:;;::::,::,::;;;;:::::;;::,::,,:,.,,,
:;.:':,,;:,,::..,:::::::::;:::;::::::::;:,':,,;'''+'+++''''';;;;:::,,,:,:,::::;;;;;;;;;;::::::::;;:,:;;;:;;::;;;;:;::;:::;;;;;;;;;';:;;:,,.:;:::::::::::::::::::::::,,:::::::::::::::::::,,,,:::,:,
;:,:'':.;;;:,..,:;:::::,::::::,,;:;;;;;;;;;:::;''++''';''';:,:;;;:;;;;::::::::;::;:::::::::,::;:::::,:;;;;;;;;;::::::::;:;;;;;:;;;;;;:,,,.::;;:::::::,::,,:::::::::::::::;::,:,,:::::::,,:,,,:;;;;'
',.:;;;,,:;;,,,::::::,:,.,,;;:,:;;;;';;'';;::::;''+';;;;;':,.,,::::;:::::::::::::::;:::;:::,:::;;;;;:;;;;;;;;;:;:;;:::::::::;:;;::::::,::;:::;;:;::::;::;::::::::::::,,::::,,,,,:;:::,:::::::::::,:
:,,:;;::..,,:::::::::,::,,:;;;::,;;'';;';;:,:::;';;';'';;;:::::;:::::::,:::::::::::;;;::;;::::::;;'+;;'';'';';;';':;::;:::::;::::::;:,:;;:::::::::::::::::,::,::,,,,,.....````.............,.,..,,,
::::,::,,,,,,,::,::::,:::,,;;::::,,:;''';;:,,:;;;;,::;;;;::::::::::::::::::::::::::::;::::;;:::;;'''+++++'''+:';;;::::;;;;;;:::::::;:,:,:,,:::::::::;;;;;;;;;;';;;;;;;:,:,,...,::;;;;;;:;;;;;;;;;;;
':';,,::::;,,,:,,:::::,,,,::::,:':,,,::';,,,.,';;::;;::::::::;:::::::::;:;:;:::::::::;;;;;;;:::;''++'++++''''+'';::::;;';;;::;;:::,,.,,,,,::;;;;;::;;'''';''''';;'';;;;:;;;;,,:;+;;:,:;;;;;;;;:;:,,
+';::::::::;::,,,;:::,,,::::::::';;,,,,:,`,,.::::::::::;::::::::::::;;:::;;:;;:;:::;''++'++++++++#++#++'+#+#;+'';::,:;:'::,.,,,,..,,,::;;'''';;;:::::::;::::;;:::;:::;;;::::,,,,:,::,.,:;;:;::::,,.
';;;;;:,::,:;+;,,::,::;::;:::;;;;'+':::,``,,::::::::::;::;:::::::::::;;;;::;:;:;;;;+'+'+'+++++++#+++'+'+++'++''++':;;:;':,.,,,,::;::;::,,:;;';::::;;::::::::::::::::::::::;:,::::,,,:,::::,::::::,:
;;;;;:,,,,,:::'+;,,,:;;;:::::;';;;'.,:':,,,:;:::::;;::::;:;::::::::::;;;;;;:;;;;;;;:;'+'++++++'++++++++++++''+''+'';;,;'+'::::::;;;;:::..,::::;:;::::;;::::::::::::,::;;;;;::::::::.::::;::::;:,::;
;;:::::::,,,:,:;';:,,,:;;:::::::::,...,;;::;;;:::;;;:;::::;;:;,:::,,,,:::;:;;;''';;';''+++++++#'++++++'+'++++;+''+;;';;'+;;:;::::::;;::;,,;:::;;;;:;;;;::;;;;;;:::::::;:;';;;::::;::::;;:::::::::::
:::::,.,:,:::,,:::::::,:;:,:,,::::;:```.::;;;;::::;;:::::::;::;::::::,::;';;'''+;;';:'''+#++++++++'+++++'+'+'+'+''''';;'++';::::::::::::::;::::;;;:::::::;;::::::::::::;;:::;;';:::::::::::::;::,,:
;;::,.`.:::;;;;;::,,'';,,,.:::;;;;+',`.,::::::::::;;:::::::::::;:::::::,,:;'''+''';':;'+++'++++++++'++''+'+'''''''''';;+;;+';:::::;::::;;;;::,::;;;:::::;;::::,,:::;:::;;;;;;;:;::::;::::;:::::::,:
;';:,...:;;;':;;;:,,'::;:::::;:::,,:,:';:::::::::;;;;;;::::::;::::;::::::;''+'++;';;;;+'++#''#''+++'+++''++'''';;;;''';'':;';';::;,::::::;;;;:::::::;::;:;;;;;:::::;;;::::::;;;;:::::::,:;:;;;::;::
:;;;;:.`,:;;;;:::,,,::::::;;++:,;:.```::::::::::::;;;;;;;;;:;;;;;:::::::''''+''+'';;;;''';''''+'+''+'++'''''''';;';;'';';;'#'';::::;::::::;;;;::::::::::;''';;;;;::::::::;;::::;::::::::::::;:;;:;;
,,:::::.,::,;:::;';::::;;;'''++'+++;,:;:::::;;;;:;;;;;;';;;::;;;;::::';'''+'+++'++;;'''+'''''+''''''';'''';''+;'';;;;;;';;'+';';':,;::::::;;;;:::::::::,;'+'';'';:;;::::;;::;;;;;;;:::;::;;;::::;;;
,::::::::,,,::,,::'::::::::;;;;:;;'+'';;:;::::::::,::;;';;;;;;;;;:::;;''''''''+##'''';+'+'+'''+'';'''''';''''''''';;;;;;;;';'''';;;::::::::;::::::::;:,:::::;;:::::::,:::::,;:::;;:::,::,:;::::;;;:
:;,.,:;;,,:,,:;:,::;;:`,;:,:::;;;::::::;:;:::::::::::;;;;;;;;;:;;;;;;;'''+'''++##+'+''++''+'''''';;;'''''''';''';;;;;'';;;;'+'''''';:;;;;;;;;;;:::::;;:;;;;;;;:;;:;::::::::,::,:;;::::;;;;::;:;::::
:,,::;';:,,:,..,::;;'` ,';:,;;;::::::::;:;;:;::::::::::::::::;;;;;;;;;;''''++++:;#+'+''+''';'';;''';;';;'';'''''':';;;;;;;;';''''';';';:;:::::;;:::;;;;;;;;;;;;:::;:::::,::::;:::;:::;;;';::::;::::
,,,:;:.:;,,:.``.,;;;.` :'';:;::::::::::;:;;;:,.::::::::::::::::::;'''''+'+'+'@:':'#'''';'''';:';;;;;';''''';;'';';;'';;;;';;';'+''+''';;;;::;:;;;::;;;;;;:;:;:;::;;;;;,:::;;:::,::::::,,,,:::::::::
,.:;:,.:;,:, `,,`.,. `'++'';::;:::::::;;::::,,::::::;::::::;:::'''+'''''+;+++@#':++'++';'';;'''''';';;';;;;;;;;;;;'';'''''';'''''';'';;;;;;::::::;:::::;;;::::::;;;::;;::;;:::;::;:,.,:;:::,,:::::
.`:,:,,,:., `::,`` .;;'';:::;::::::;:;;::,.,,,::::;::::::;::;++'''+''''+++###@'#'''+''';'''''';;;;;';;;;;;'';';''+'''+'+;;'''';;;;;;;;;':::::,:::::,;:::::::;::::;'';::::::::;::.`:::;;::;::::::
`.,...` ..` .;,:.` `,,;;;::::;:;;:::;:;,,...:::::::::::;:::::;#'+''';'''++'###++'+''+'';;'';'';';';+;';'''+''+'''+++++'''''';;;''''';''';;:,,;::::::,:::,:;;;;;;::::;:::::,:::::,.;:::::::;::::,,
..,,,::`.` ``.:.,`` `:::;;;:::::;;;:;:;,..`.:::;:;:::::,,;;;:::#+'+'''';'''''##++'+;+''';'''+'''';+'+'''''+++++'+++++''+'';''''';'''''';';';:,:;;::;;:;::,::;;;:::;:;:;;:::::::::,,;::::;:::;::;;,,
++''++':.````;;.```,;;:;;;::::::;:;;::.`,:;;;:::::;;;:::;;;::.++'''''+'';';'''''++'+:':;';'''+''+'+''++'+'''++++'+++++'++++''+';''''';;;;;;'':;;::::,:::::::,,::::::::;::::::::::,::::::::::::;::;:
;::;::,,``...:.``.,';;;;;::::::;:::,,::;;::;;:;::::;';;::::::;'++;';';;;''''''+++;''''';''';+++++''++++++++'++++++'++++++++'+''+';;;;'''+''';;:::;;;:::::::::::,:..:;:':;::::;:::,:::::;,::::;::;::
` ``....,`::..`.,.:;;:';;:::,,,,,,::'';;::::;::::::::;:;:::::++''''';;:;+++''+'''#''';''''+''+'''+++++++++'+++++''''++++++'+'''+;;+''';''''''';;;;'';;;;;;;:;:;:::...:::::::,:::;;::::::,::,:::;:::
;:......,,;,.`::,..,::::,..,,,,::::;;;;:;::::::;:;;;;:;;::::''#++'+'''+++++'';''++''''+''+''''++'+'++++++';'++''';;'+++++++''+''+';';''''''';'';;::;;;;:::::,,:;.,,,,.,.,,:::;::::::::::::::::::;::
;;;'';:;:;:::,::;;,::,:::::;::::::::;;''';::;::;:;;;:::::;;;++++'';;'''''';;;'+++'''''''''+'''++'+++++++''+''''''''''++#++++'+'''';;;;';';;:''';;:::;;::';::.,,:,:;;;;;;:,.``,,:;:::,:;;:,:::,,,,,:
;'''+:,::',:';;;;;:;;;;:;;:::;;;;;;:::;;;;;:;:::::::::::;;;''++'''''''+'';'+''+++'+''';'++'+'+++'+++#+++'+++''++++++'#+###+++++++';;;;'''''';''';::::::,,..:,,,,::::::::::;:;:;:..,::'';;:;::`..```
;;;;:,,:;;:;::;;;:,.,;::;;:::'+';;;;;:::::;;::::::::;::::;'+++'''''+'';;;;;;'++'+''''''+;+'''+++++++++++++++'+##++'@''++###++'++'''';;';;'';':;'+';;:,,:,..,:;:::,::::::,:;:;;;:::::,:;:::.`....`.`
:.:,,,,:::,,:;'''';.::;:::;;;;+'''+++':::::;;;;;::;::::;;;'+++'''''''''';;''''''';'''''+'''+++'+++#+#+#+++#+++++'''+@@'#+++#++''+''';;;'';''';;;'';:,,:,,:::::::,::,,.,...```.,:.`...`.:`:.:,:';'''
,..,,.,,,..,:;;;:;;::::;;;;::;:.,:'+''';;:,,:::;;;:::;:;;;+'++'''''';;;;''''''+'''''+++''''+'++++++##+#+##'';'++';+'+++###+++'++++''';;;';;;;;;:;'';::::,::::,,....::;:,::,:;::;;';'';;':,::;;:..``
:::,:::;';,:::::,::::,::,::,:::;:;;::;,:::::;;:::::::::::''''';'';'''''+''''++'''''''''++'+'++++#+###+#@@#+'''++'';###+#+#+++''+'+''''';''';::.:;';,:,,.,:;;;;;:;;::::::::;::;:;;;:;;;;:::;;::::;;:
:;;;;;;;:;;::::;,::,,,:::,,,,,::,:::;:` .::::::::::,:::::+''';':'';';'''''+''''++'''''''''++'++++######+##@+''+#''@@@'++#++++'++''+'';:;:::::,::''+';;;:::;.....,,,::::;:::::::;:::::::,::::;:::::;
::::;;::;;;;::,::::,,:::,,,..,,,,::::`` ` .;::,:,::,:::::+''+'';'';;'''';''''';;+'';'''''+'''+'+######@###@#+''#++@+++'++++#+++++'''';;;;'++''+''';:,,::,':::::,,;::,:,.,:::;:;:::::,,:::;:,,::;;,;
,,;;;;;:;::::,,,::::::,,,,,,.,:,;::;:`` ` `,:,::::::::::''+';;;;;;;;;';;'''++'+';;''''''++'+'++++######++#@##+;'+++'+'++++++++++''''';;;'''';;;;''':::.;,,:,::;:;,,:;:;:::;:,:,;;,::;:,:::,,:::,::
:::;''++';:.:.,,:::,:;:::::::;;;::::::``````.::::::::;;::;+'''';;;;''';'+'';';;'';'+''++++++++'++++##+++++++#+###+++''''+++++++++++'''';';''''''';'';;,;;:::,,,:;:,,::,;+';.;;';;':;:;;:;:::::;::,:
::'';;;''+':,::;;::::::::::::::::::::'```,``.,::::::::;;:'''''';';'::;;;+'''''''+''''''''''++''+#+###++'+;+##+++++++';;;'#+++++++++'''';;'';';;;'+''',;:,::::;;::,,::;,;,,:::;;';;;;;,:::,:;::::;;;
;;:;::::::':,:;;:::::::::::::::::::::;;``,``.,.;:;;::;;;;;'''';'';;;+''';:'+'''';'''+++++++''+++'###+++'+#+#''+++'';;;:;;''+++++'+''''''';''';'';;;''+;:::::::;:;;:,:;';;::,,::::;:::::::::::,,:,,:
:::::;;;;:;;;:::::,,,:,,,,,,:::::::;;;':`,:.,,`:;;;';::'''''+;';;''''+;''+;'''''''''''''+++'#++'#++##+'''''++++++'';;;;;;'+++++++'''+''';;;;;;'''';;'+;,,:::::::::::;::'::::::::;,:;;:,;':::,,;';;:
;::;:::::::,,,,,,,,,,,::;:::::::::;;;;;+::#;`,,,:::;:;::''''''+;''';;;;;'++''';;;''';'+'++#:++++;++##+';;''''+++'''';;;;;'+++'++++'''';'';;;'''';;'''';,:;:;;:::::::::::;::;::::::;:::;+';:;'+'++''
::::,::::::,:,,:,,:,,::;;;;;;;::;;,::;;'+;;+,:`.;:::::;;''''';;''';;'';''''++++;,,;'+'''''+++#####+#++;;;;'''''+''';;';;'++++'+++''';''';,:''::+''+:''';:;:::;;:;:::;;';::::::::'::;,::,:::;;'+#+++
';;;::;::::,::,:::::,:;;::::;;::::;;:;;;'':+;'::;::::::;'''+;+';';++:'+++;::':;;;;;;:''+'+'++##+++++++;';;;;'''''''';;;;''''#''''+';';:::;'':,+',''+''';';:::::;;;::;:,::,:;;:;:;;;;;;;:;:;;;;;;:;;
;;:,:::,:,::::,::::::::::::::;:::::::::;:;:''::;;,,:;:;'''';:';;;,:''';;'#+:';;';';;';+'++'+++'++++++'';;';;'''''''';;;;'+'''+++''+';'';:;';'++:,+.+'+'::;:::::;;;;::';:,;:;+;:;;;;;';:::::;;;;:;::
::;'';,:::;:;:::::;:::::::,::;::::;::::.::::;';::::';:''+;;'+#,,;;;'+'++',;'''''';;;'''''++++++++++++'';;;;;'+';;;''';;';'+++++++''''';''',''';+';:'.+';;;::::'+'';:'+;:::;;;;;';:;;;;:;;;:::::;;::
:::;;;:;::::;;:,;;::,,,::::::::::::::::,::::::;:;;;'';','';+,;''+'''''::;+++;'';;'';'+'++''++++++++#+''';;;;';';;''''''''''++'#+'+'';''':'';:+';;';;;;:':;;::;:;;:;;;''::;';';''':;;;;:::;;;::::;;;
;;;::::;,;::::;:::,,,,,,:,,,,:,,,::::,::::,,,:,,,:;';,;''#.'';';''+'',#'''''';'+''++'''++;'+#++++++#''+''':;;':'':;''''''+'+'';+''+'''''+,:'+;+''';;';;.':::::,,,:;;;''+;';;;'#;;:;;;:;;;;;;:::;::;
;:::::::::::::,:;::,,,,,,,,,:,,::,::,,::,,::,::::,:.:';+.'''''';++',:''++''''++''''''++++;#++++++##++''''''';:';';;:,++'''+++++;+''+'''''+;:,#;'':;,';';,;;;:;;;;;:;:;::;;'';;;;;;+';;;;;;';:;:;;;;
::,:::::,.::;:.:,,,:,:,,,,,::::,,,,,:,::,::::,,,:,:;:;,''+''';'''+:'+''++++++'''''+;+'+++++#+#'##+++++'''+';;;;''';;:';+'+'+#+#+'++'+'++;;+:+:.#;;':'''+.'`;;;:;;::;;;;;:::;'';;:;;;:':':';;;;;;';;
:;:::,,,,,:;:,,:,:::,::,,::::::,,,,,::::,::::,:,,:,::,+'+'''++'':;'#'''''++''++'+':;'''+'++'+++#+++++++''':;;;;+;''.,;,''+#'+#++'+'''+'''+,'''+,'';''::'+:+.;;:::,;;:;;;;;;;;;:;;;;;;::;:,;;';;';;'
;:,.,,,:;;::::::,::::,:,,:::,:,,,::::::::,,:::,::;;.';;'''''++',++;'+''+''';+;+',;,'''+;+++'+++++####+'+;+',';;'';;;;.:;'++;++''++'+#;+''++:+:+'',+;;+;,';:;,;;::;;;;:;';;:;;;;;:::;:.'+''';;;;';;'
,.,,;:::::::,,::;:;::::::;:,,:,:,,,:,:,:::::;:;;;:,;;;'+'+'+'+:''+''''+++''#;++`+,+''',+++'++'+++#+#++++'+';:';;';;;;:;.'++++'#+'++;+';''++',#;+;'.'++;;.+;;:,;::;;:::;;::;;;;;:,,:;;;'''::;''';;;;
::::;:::,:;:::::::;:;';::::::::,,,::,::;:;:;:;;:,':;;'+''+++';++;''''+++;'+;#+.+:+++',++++'++'++##++#+#++;';;:;;+;;;:,'.+#;+;#+;++++'''+;';+':';+:',+;''+.;;:;,;:,;;::;,::::;';::'''++''';;;';';;;;
::;;::::::::::::::;;;::;;;;;;;:::;::;::;'';;'';,:;;;;''+'+++'+'++'+''++:''''#.':#''';++#'+;++'++##'#+##'+'::;:;;+;:::,':'+;#+'++'''+;'+:+:;;++,';+':;'''+':;;:;:;:::;;;';;::;;;;;;+;::;;;;;;'';::;;
:;:;;:,::;:::;;;;;'';;;::;:;::''::::;';'';;''';;;;+'''+++'+'+'+'+++'++,+'','.++;+'':;'#'+#'+'#++#+'#;+':'',::;::+;:::.::+#'+++#+;++;@;:+:',::+;,+,+';';;+'',:;;;:,,,::;;;;:;;;;';;:::;;;;:;:'';':;;
,:::;::;::::;;;;;'''+;:::;::,,::;;:::;';;;;':'';;;'''+++'++++++#+++++,'+',:,#+,'''+#'+;+++;#+#'+#''#;#++#+',:;:;+;;::.;;'++;+''+;++'+;+;;++;::++.+`'';;;:;;;::::;:;;;:::;:::;;;;;:;:;:::;;;;;;;;;;;
,,,::;:;;;:::;;;;';:;:::;;::;;;;;;;;;'''';;;;;';;;'''+++++++'++''+++.+#,:,'+''++''+;+++++#:++#;+#'#@;##::;;::;;;';:::.;;;++;+++''''';';;':'+;::'''':;''';;;:;,:;;:,;;::;;;;;;;;;;'';;:;:;;;';;;:;;;
::::,:,:.;;;;;;;;;';;;;:::;'';';'';;;'':;';;;;;';;'+++++'+'++++;''+.++..:+.'':+'+++;#,+++#+++#;'+;@++##;''',;;;;';;::.;,;';,'+;+''';;#;+;'''+'.:':';'''':+;;;;::;:;.;:;;;;;;;'##+';;::;;:;;;;;'':,:
::::::::::''';;;;;::'+;;::::;;;:;';;;';:;;;;;;;;'''+'++''+++++'+';,+':,;'.++#+;:++:;'@+##+#+##;'+'#+#++++';::;;;';::,.'::'+:;+'';'+#;;';'''';;+;'':;,''''.;;;;:,;:;',:;;;:;;;;:'';;;;;+;;;:;;;;,,::
::::::::::::::;';:::;::;;;;:;:::::';';;;;;;;;;;;;'+'++++++'++'''':+;@,''+;++'''####;,+'++###'#'+#++#@'++;'';::;;';;;,,+;;''';;+';++++;':+;;''':#:';'':'+'',;;;:;:',;'::;;;;;'+'';;;';;;:;::::;;,;';
;::::::::::::;::::;;;''''';;';;:;:;;;;:;;;;;';::;++'+;''+++''++++#'#`;++,#++;;;#+.#;@+#++#+#+'+##;++#:#+''+;::;;#++'''+'''+++;+#+###+:''':;'''+:;:';';''''',:;';;;:::.::::;';'';;;;:;;'':'';;;;;;;;
:::::::::,:::;';:::;;;''++'';:;';;;;;;;;::;;;;::'+';++++++'++#+#:++:,+++''+#.;+'@+;,+;+#+#;##++'++'#+;#++''+:;###++++++'++#;'+;'##+++;'+'++'+'';#:+.;+,:''':';;;;,';:;.:;:;;;;';+;;;;';;';;;';';:;;
:;:::::;:::::;;;'::;;;;;;''':;;';;;:;';;';;;:;'+'''++#++'''+'+#`'':`@++++'';';++:@#;#+##+#'@+++'+++++''+'@'+##+#+++++#++'++++++'+#++#''+;++;''';:'`';';''+';.;;;;',''''::;;;;;;''';;;;;;;:;;;;;:;:;
:::::;:;;:::;;;;'+:::;;;;;;;;;;''';';;#++'''';;';''''+'+++'+';:+#,''+'','+#:,+++.:##:#+#+#;##+'+++#+''+@#+++++####+#++#+++#'''+#'++++;#+'+:;'+:';;'';;',;+';':;';;;+++';';;;';;;;;;';;;;::;;;;;;;;:
::;::::::;::;;#'+'+'+'';;;;;'';;';;+++'+'+''''+++''+++++++''##'#.+`++;':+',+`++##''@:#+###+###'+;@##'++#++##@#''#;'';++++:'+''#+#++++''+'';:'''';:;::;':';';;;'';;':+';':''';';'';';;;;:;;;;;;;;;::
::;;;::;;;;::::';;:''''''''''''+';'''''''+++'++'+'';+++''+++#`+`+:+';++''#;+;++++@:@#'#####;##;+@'+'++'++++#''+'#'''';+'''''+'+++####'+++'';;;'';:++`';;,;';'':'''';:'''';;;;;;;;;::;::;,';;;;:;;;:
:;;;;:::;;;::,';+'''';'+++''';;;'+++'';''++++''+++'+''++++++;#.++,'++'+++.#,'+':,+.+#++###+;@#'@#++++'''++#+;'''#''';''';;;;;';''++++''++'+:#';;++;':;;',;';''''#++'+:'';';;;;;+;;;:;:;:::;;;;;:;;;
;;;:;;;:;;;;:;;;:+'''''''+'''+';++'''''+''+++''+++'+++++''+#:,++`.+''+;+#;+:+'+:++.:#++##+##'#+#++'+''++'++''+''#''';;';;;;;;:;:;++##''+++#;+++:'':;,;;';':';:''++++''++'''+'++#+;:;;;;:;;;;;';:;':
;;;;:;;;;;;:;;:;;#+'';'+''';;;;'++'''''#';'+++'+++''++'+#'+,+'+++;;+':+#;#++''+`++.,+++#####'+++#++''''''++'''+'#'''';';;;::::::;'+###;'#+#;+'#+;;;';:;;+:'';+;'''''+':+''';'''':;;;:;::;;;:;;:;:::
';;;;;;;;;:;:;';;++;##+'++';;;;;;''''''++:;++++'+'++'+++++#';++`+++';#'+.';#;#+ ++::##+###+#'#++++''''''''+'''''@'''';'';::,,:,:;''###'+++#''+;'';;+:,;;;:'';;';;'''''+'';;;;:;:;;;';;:;:;;;;:;:;,:
';;:;;::;;;;;;;:;''++'++'''+;;''';';'''++##++++''+'''+'+++,:++'+,++,#+'#++.'+;+.++';+++####@+#++'+';;'''+'+'+'++@'+'''':;:,:,,::;;+#+##;'#+#+;+'+++;:';;;'#';;;''''''';;+;;'';;;;;;';;;;:;:;:::;;':
+';;;;;;;+';;;;;';;+';'''''+'''''''';';+#+'';+'+++++'''+'@`+++.',#:+'+':+#:+'+#,+++;#+#+####+'++';;;;;''''++++++@'++''';:::,::,:;'++#+++++#+++''#'',:;,;'++'';;;'''''''+:+';;:::;;;:;;;;;:;:;;;;;';
+';;;;;;;''';;;;;:;'';;'+''+++''+';;'+'+++';'''''++++++'+`+++:++,,'+'++,'#+#''':+++:+@#+####+;''';;;';;'''++++++@'+++''::,,,,:;;;++###'#++#+#,;''''::':;:';';;;;''''';';'';;:::::;;'':;:;;;;'';;'''
'';;;;;'';:;;;'';;;;'':;''''++'';'''+#++#+'''''''+''+'++';+++:'#;'++++;+++#:'+;;++#:'#++##+++'';;;;;;;;'''+++++'@++++'':;:,,::;;'+++###++'+#+#;:++':;':+;:,+;;;;'''''';'':::::,:;;;;';;:;'''';'+;''
;''';;;''';;'';;;';;';;''';'+++';;'+#+#+++''+'+'+++'+++#:@'+,++''+''''+#+;'++'.'++#;;+#'##++''';;';;';;'''++++++@#+++;;:::,::,;'++#####+#'++#+'##'':;';';'`+''''''''';;;:':;:::::;''++'''++++''''''
;'';;'''';''''';;;;;;;';;;;';;;;;;';'+++'''+''''+'+'++#,.'+#;'+;+++'+',+';#'++,#++#;'@+###+#+'+;'';;;;';'''++#++'++++';:;:::;',:+#####++#+;++##''+':''';'';;'''''';'''';';,::,:;;''''++''''''++'+'+
'''';;';'''+'';''';;;;'';::;;;;:;;;;;''''''+'';''++'++;@'++.'';;#''';#.'+:+'++:#;+@+#;+'#@+#++'+'+;;';;;';''+++++'+'';;;:,,:;;'''+###+'##+;#++#'#';;+'';;'';'';''''''';'';:;'';;;'''+'+'''''+++++++
';:;'''';'''++''''''';;';'';;;;':';;;';''''+'+''+''++++:#++'+;':'+'+'':+',+++#'+.'+#@#:+##+##+'++';;';;;;';;;;'''';;;';;;,::;';;'####+'++;++++++'+';'';:'''':''''';';';''++;++';';'''''''''+''++'++
;;;;;''';''''''''''+'';'++'+';;;''''''';++'''#'++'+'+;',++,''+';'''''#''','+#@++#+##;#++######+'++;';''''';;;;;;;';;;;';;,;;;;':;:###++'#+#+:+++'++:'';;;;;::'''''''';;''+####+++';''''''''+++++'''
:,;;;;'''';;'+++'''++'';''+'''''''''';''++'+#'''+++''+#++++'+'''+'''''##',+'#+++#;##'##;####@##++''''';;'''';;;;'';;;';;;::':;'';+'+#+#+'#@++#'+'++:;;;:''::;;'''';;';;''++#+++#++''''+'''''++'''''
::;;;';;'++'''''''++#'++++++'';'''+'++''''+'+++''++''':+'''''++'';''';+'+,++++#+#+###@+#'######++:+'';;''''''''';;'''';;::;;:;;''+#+#++'#+#+#;'+;;+;'';::;;,;;;;';';;;'''''++'++++++';'+'''''''''''
:;;:;;;;''+'''+++++'++++''''+'''';':;'''+;+;'';;'';''',+'+++'''';+''':#+':'+++#+#####;##'######'+'+''';''''''''''';;;';::;;';;;;++#####;#+++#+++'+''';;;';;;:;:+:;:'''';;'''+'+''''''';'';'''''';''
;'+';;;';''+'++++''+'#+++''++++;''';+''+'++++''';+'''+;+';'''++'+;+'',''+:;#;+++####@@#+#+@####+'+++'';+''''';+;';;';;;::';;';++++++#++'#++#+@;+'++;';':;;:;;:;;';';;;;;'''';''''+'+;''';;;;''';;''
''+'+';;;;;''''+++'#++;#+'+++''+'+'''+++++++''''''''''+'''+'''++;+;+',#;+:++''#'#+##@+:+@+######'++'+'+'''+''';:;;:;;::;'';''++#####+##+++++++;++;'''''':::::;;';'';;'';''''''''';;'';;;''';;;;;'''
;;'''';;;;''+#+'+''++#+++++++''''++''''''+''+'++';''';'''''''+''''+''.+++'##;#@+++###@##+++###@+++'+#++''''';;;:;:::;;:'''''+####++#++++++++#++++;';';';';'':;;;;';'';';';'';'''''';''';'';;;;;;;;'
';+':'';;;;;':++'''''##++++#+';''''';'+''+++'+'''++:;;'+'+'++'''+'+;'.+'+;+++##'#+##+#+++##+#####+++++++++'''';;;::;:;;'''''+####+@++#++++#++''#;+'';;;;'':;';;'';:;'';''++'''''+'''';;;;';;;;;;+:'
';+''+;';'';'+'+''+'+#++'#+#++''+';'''''++++''+'::+';;''''+'''';;'++'.+'+##++##++'##+#++;'#+#####+#+#+++++'''';';;';:;''''++##+#@##+#+++#++++++++;;'';;';:;:;;::;'++'''+'+++'''';';;;;;';;;;';';'';
'#';++'';;''''+''++'+++++++#+++'+++';'''+++';','++';;''''';+;++''''++.+++@'##'#+'+###+@''##+#@########+++++++''+;;;+';''#'+######+#+#+++++'##'+'''''''';;'';:;;;';;;''+++#++#''''';;';;;';;,;;;''+'
,:';+++;';''''''''''#+'''+##+#+#++'';'''''''';'+';+';;;;':+'++';'++'+.+#+#;+#+@++++##++;#+@'@###@######+#++++++''+'+;:+'#+######+#@#+##++++'++';'''''';;';;';,;;:''''+#+++''''''';'';:;:;';:,;'';,;
,:;+'+''';'';+''+;+'#+''+###+++++#+;++;+';;';''';';::''';+''+'#'+''++:++#+;#++@++'+##+#;##''###########++#+''''+''##+'+++@+#@+++#+####@##++'++'''''''';;;''':';;';;'++###+''''';;:;;;;;;;'';'';'';:
:::;+''''''''+'''+''++'+###+++++++''';''++'+'';''''';;';;;;+'++''+++#:++++'+++#'#+;##+#;##@'@+#########++++'+'+'''###+#####@'+++#+#+#####+++++'''''''';';':;:;;::;;'+++++'+'';';;'';:;;;;''''+'';+;
:;::;''''+'':''''''###++##++++++++;;;;+'+++'''''''';''''';'''+;++'''+:++#++##+@:#+;#@+#;###'@###########+++'+'+++'###+#####+++++++++######+''+''''''''';:;:;;;;;';'''''''''''';''''';;;';'';;;';:;:
,:,:::;+++'''+'''++##++###++++''++;';+'++++'''#;';;;'';';''++:'''#;++,#++++'''#;'+'#@+++@###########@####+++''++++#@#+@##@@+++@##+++++###+#+++''''''''';:;;';;;';;:''''+'''''''''''+';;''''''';';''
,::::;::;''''''''++##+##+++++'''+;;''''++';;'';';'';;:'';'+';#;+;;++';++++#;'##;++#'@#+'@+#+########@++##++++'++'+##@+#@###''###++++++#@###+++;'';'';';'';;;';';'::';''''++'''+'+++;+'+'':,,''+++';
::,::::::;'+''';''++##+#+++++''++;';';''';+';'''';''+'';''+''+''+'+'';++++#''+@''#++##''+#+@##@##@#######+++'''#++####@###++@#@#++#+++###+++';'';+'';;;;;;':;';;:::':;'''++'+'#####;+++'+''';'''';;
;:;:'';;:;:;''+''+++#+##+++'++'';'''''''';;+:;'::'+';;;''+':+'''++''#''#'++++#'+:#+#++''##+##############+'+'''++#++#++#####@####+++++++#+'++''''''';;'+'':;;::;;::;;;'+'';;:;;:;+##+'';'+';'+:'';;
,;;;;;;;'';;'+##+'++###++'++++'';''''';''+;'';;+;;,';;;'''''''+''+++#;#++++'+#+';#+#++'#++##############+++'';;+'++++#+####@###+####++#######++++++';;;'';'::;:;::;;;;:::;;;;;;:;:,+''''';;;;:';'';
,:;;;;::;;;;';###+++##++++;::++';+''';;'':;:;'';;;';'';'''''+'+''++++'+##'#@++#+;+##+#'+##+++######@+@##+++'';#++++#+##++#@###++#+#'#+###+#++;;:;;;;;;;;;;;:;;;;;;:::::;:'::::;;;;;;;;;;';;;;';';;;
:'::::,,::;'';+##++++++''::;:::,:::;;:';;;;;;;;:;;;;;;';'+;++++''+++'++#++@#+##+'#+++#'#++@###@+###@#####+';''+'####+#++++#+:'@#+#+++##'';;';;:'+;:::;;;;';;;':::;::;:;::;:;;':;';+;:;:';';.;;';'';
;:'':,::+';:;;+#+#+#;'.,::;,:;:,::::::::::;;::';;;:;;;;';'++'''+'''+++++##++###+#++#++'+@####@+#@+##@#####'''#++##@#@#';;;;;;';+';;;:;:';;;;:::''''':;:;:;;;;:';::;::::::;.::';;:;;:,::'';;'';'+'':
'';;:;;';,;:;;:::,,::,:;;::,;:::::,::,::,:,,::::;;;;;+'';'+++''++++''+++#++#####+###@#'###+##@#++########@#++++####+';;;':;;;;:;;;;:;;;:;';;'+''''';+#;:;:;::,;;:;:;:;;'';;';:;;;;;:;'::::;.:;;;:::
;'''+'';:::::;,,;;;:;;;:;::::,,:::,::::;,,::,:',:,;+';:'':'''++''#+'++'#++++#+########++#:;###;';:;###',::,;';###';;:';;;:;;':;:::;;':';':';;+';'#+;;.;;;;;;::;::::::;:''..:,::,';,,:;::;:::;:;;;:'
,,::::::::;':::;:;;::;:;::'+'+:::::::::::;::,:,::;;,:;;';'''';++;:'+#++++#++++@@@':####'@,;:::#''#';:;:;;;;::;';;:,;:':'';;;':::';;;::;::;;;;;;;;;:::;:;:::;;:;;,,,:;,;:::;:;;;'';';::;;;::::;;:'''
::::,::;;':;;,,:::;;;;;;:;:;,::.:::;:::,;::,::;;;+;;:;;:;;;:::::::':,;;;'::#'',:`,:;@:,:.;,;;,,'#++;;;:;;'::;,.;;',,;:+'''+'+':,,;''+,;'':';:::,::,;;:::;';:::,,::::;::;:::;:,;+'++';;:,::';:;:;;:;
;'';;;::;:;;:::::::;:;::;:''::,::::;;::::;,.::,;;::::;;:;;;;;;::;:':::';;;'. ;;:':;':::::',;::;:;';;;;;;;;;;.,::,;'',.+;';'';','+#'';:;:;;.::.::;:,;:::,::'::,`,,:#':;;::::::;,,`.:::;::':::;;;::;'
';:;;;::;;;:::;::;:;;:;::::;:,,:::::::;::;:;,:;;;::'+::;;.,:::;;;;;::;.;:: #;;:;:;,;';''''+'#+'::;;'':;;:,;:''':+:;;'+;';+'''++;,,:,;';:::;;:;;;,:,::::;;;;':;:;;:::,::;::,:;;;;;:;:,:+:;;:;'';;,;;
;;+;;;':;:;';:;::;::;;;:,::;;:;;;::;::,';;:,;;';;;:;,;::;+;;';;++:::';::::',;;;,;;';:;:;;,:,,,,::,,:'';+ :;+;:;#+,,';;;';+;';;::,:::;:;;;;;;::::.;,:::::;::,:;;;:,:;:::..,::,:;:;':::;::''';:;#::+;
;::,:;;;:.,:';:;;;::;;;:;;;:;;:;;;;:;;':'+:;+,,;,:';;;'+;:;;,:;:,::::;;+;;+,;::;;'''+;;:;::;;';:;'';::'::;';';'''',';+';;+''';;::;;:::::;;;:;:;;,::;:,;:,::;:,',:;:;:;:::;::;::,:::::,;#';;:;;:++':
:;; ;:::;;'':,,,:.:+'::::,::;;;;;;:;:';',,:;;::::::;::``. :;;;::;'::;;';.+,;;;:;;:::,;:;;;:';;''+;:::;,+';;:;;';;'+;';''+@++'':'::;';;.';:::;'.::::;::::';:;::::',::'.:;::::::;;:';;''::;;;;:';:':;
' :;,;::.,;::;:;:,+:;;;::;:,:,,;::;;;:';+'::;;;;:;:;:,;'+#,:'';;;:`;;:;,.:':';:;::;;;;;::;;'+++';;''':;::;;:';+':;:@'##+'+#+;';;::;': :;,:;::,;::,:::;::;::::::'+';::;::::::;,;;;::;;:;:;+';;;:+#+'
;++''':; ;:;:;'';:;:;;;;;;:,,,;;;;:.`,;+';:::;';:;;'';:::,:;;;;:,;:::::';::;;;';::;',';::;;';:;:';;'';'';:;;;'+'+';''#';:;,,;';':;,:::'++;'';';;;:;::,::'::::,, :::::':;;,:::;,':;;::::,:,;####+;:;
::;:;;:;,:;:;::;+::;::,;';::'::'+';';::;;;;':::::''::;;;';,;,,;:;;:';,;;::,;::::::::;;:,::;,,:::;;;'++'++'''::;;;;';':.:,:;:':;:,:::,;;''+;:::;;:;:;',:;;:::;;;:;,:::;:;:'::::',;::;++;,,';,;:;;::;
:;;:;::;',;;;+;:,,,,,..:;;::+';;;:;:;:+;;:;;,;::,,:;,,;;;;;+,;'':;':;:;;:;::;:;,;:::;:';,,;;,::;::;:;;.;'';:':;;;;;;';'.;';#;::;,':::::;;;::;':;;;:';;':',:;:::;,::::.:;::;::,;:`,;:;:;:';;:,++;:::
;;;':::,';;,`.;'+':,`,',,',,.,;;+:;:+'::;;;;;,:;';:;:,,+';:.,::;;,,:;,:,,:::,';;:.:;:::;',,:':;::::;;:''+;:,.',:;+#''+;';,';:;::;:;::;;;,::;:,:,:;:;;;'+:':::,;;:,;:;;;;;;;:;;:;':;;.: ;;;';':;;;,;
,;:,':,:,:+'+;:,;,:;',:':;;;,+';;;;::;;;:':';'+;;:++;',.,;;';#.;:,.,:,::;:;;';;;;;:,;::::;:':;':;::;;':::`:::+::;:,'';;+;',+:#::;::@;:;;;;';:;',,:;:,;,;''::::;;::;::,;.:',::''::;;;:,`,:''';;;::''
:;;.;#,#',:::;:,;:;::::;::::;;:;';;:';;::;;;'':,,::;::,:;::::;.::,:::,;;;;;'',:;;;;:;:;:';;:;:'::::,'+:;+##+;;::,:';:;';;'+;::':::,..;.:::;;.:::';;;'::;;;;'',;:;:,'::;:::::;';::;,,::::;:+:;':;::;
::+`.,;::::;;;:::;:::,;:.:,,,:';;;;;::::+:,'',:,,.,;';:,';:;:;:::,::;;':::;::+:;:';;':;';;;'+;'';:,;;,::,;::',::#,;'';';':;'+,,;,'::::,:';:.,:,;;;,:':;':;;:;:';';;:::,;;:::,::;::,;;,'':':;;;;:;;;
,;;':;::;:::::::;';,;'';:;;::;::,':;,:;:.;,::::;:::;::,':::::;;':;:;::;',;;;:':';;,;':'';;;:;'##+'+'.::;:::::,`,;;;;#;;'+';,+';.,.,;;,,+,,',';;;';';;;';;;;:,,;';;;'::;;;;;:;::,;;:;:++;.;,;+.'#'':
;:;:;;:;;;;;;;;:;;;;,:;;::::;;::;;:'`,::,:,::::;;;';::::;,,:;;,:::;;::#';;';;::;:';:,+;:;;;::;:;; `::;;,:;;+,''';;+;;::,;;;;'''',+:,:.,':.,,::';:;'',:.,..`..,::;';',';;'';';,'+;;;:;.;:',,:;#;:;';
:,::::::::;,.`::;;;:;+,:;;:,;:,::.,;,,.,:';;;;;:;';;:;:`;;,,:::;;:.,':,:;::;;;#:;;'++`:::;;:;::::;;;':';';:;;;::'+;';:;;:::,::+'+,:;;:;;;;.,. ';:;:;'++#@##+';#'';;;'+''';:;;;::;:.,:;::.,,+.:::;::
:,,:':::,,:;::::::.;:;+',:,;::::;':;++;::@'';''+';':;;::,:;;`;;:,.;;,:;::;::::;::;;,;':;;::;::+';';;'';;;:;':;;;+;;;;;:;;:::,:+'+':,,:;;::;::;:,`:'+''++::::'+;:;;;;:''':';;'.::;';,::;,.,':::::::,
.::;::::,::;;:::,.`;;:::;''',;':;;:,,,:'::.;#+++':;;;:;:':::::;:`';';:;;;';;;;,;;:;;::::,:;;:'+;'':+'''+';'++'+#++'#;+;;:::';:;+;+''.::'+;'''';;+':`,;':#,:;::,;;;;;;'::;';:;':;'''';'.,:+;;:::;::;
:;;;,,,::::`::::::::::;::::,:;;;.,:;';;;;;::';';:,:;::::,.;,;::::;;:,;;':;;,:::;:';;:::::;+';;+#'.;@#+++'+++##+#+###;';'';++';:::;;;+,:::;.::::;:,+#''`.:';;';;;:;;;,.::,:+;::;;';:::;.,',;;:'#:,,;


http://gopher.floodgap.com/overbite/relevance.html

Name: Anonymous 2014-08-09 17:55

>>93
Does this mean that I will die? ;~;

Name: Anonymous 2014-08-15 2:32

Name: Anonymous 2014-08-15 16:32

>>95
reinventing the wheel in Rust with GC for added slowdown

Name: Anonymous 2014-08-15 19:52

>>96
you don't have a slightliest idea
just dropping all legacy/compatibility crap could provide _huge_ speedup

Name: Anonymous 2014-08-16 10:18

>>97

I've a big idea: GC is shit.

Name: Cudder !MhMRSATORI 2014-08-16 12:26

>>95
It's a start, at least...

children: Vec<Node>
That's not really the best choice for the DOM tree, as simple as it may look - arbitrary position inserts and deletes, and thus "find next sibling"/"find previous sibling", are going to be far more common than indexing operations.

The article about parsing is just one big facepalm. At least use a state machine for the tokeniser... I see now, this is written in an id10t-proofed language that's missing goto so they have to bend over backwards to do anything truly simple and efficient with it. In the old thread I mentioned I had a full HTML5 parser written in C in a 24KB binary, consisting of 12KB tokeniser and 12KB tree construction. I've rewritten the tokeniser in Asm since then, and it's now... less than one kilobyte!!! At ~70 states, with around a dozen bytes per state on average, maybe that's not so surprising after all.

Tree construction is a bit trickier since the full number of possibilities is basically {text, n types of tags open/close, comment, doctype, EOF} * 23 "insertion modes", but many of these cases are identical so there's a lot of redundancy (e.g. DOCTYPE tokens are basically ignored in everything but the initial IM - considering that 16 tokeniser states are needed just to parse these, it's rather wasteful.) At the moment my tree construction is 66 functions in ~2K lines of C with the bulk of the code being switch()s; when I have the time I should try to shrink that too. Encoding the state data in arrays instead of directly in code might help...

I haven't written any CSS parsing code yet so I'll not make any estimates nor comments on that third article.

Name: Anonymous 2014-08-16 19:16

>>99
Shalom!

Name: Anonymous 2014-08-16 20:08

>>99
but goto considered harmful

Name: Anonymous 2014-08-17 1:16

How to master CS like cudder?

Name: Anonymous 2014-08-17 5:22

>>102
By picking pecks of pickled peppers.

Name: Cudder !MhMRSATORI 2014-08-17 9:35

>>101
Dijkstra considered harmful.

Name: Anonymous 2014-08-17 9:38

>>104
Shalom!

Name: Cudder !MhMRSATORI 2014-08-18 11:24

Figured out another optimisation - DOCTYPE tokens don't need to be handled fully by the tokeniser, that's another dozen states I don't need...

Name: Anonymous 2014-08-18 11:38

>>106

implying removal of features is a valid optimization

Name: Anonymous 2014-08-18 12:24

Browsers are bloated mostly because the layout engines are bloated.
Hopefully, Servo will be good.
https://github.com/servo/servo

Name: Anonymous 2014-08-19 1:09

Name: Cudder !MhMRSATORI 2014-08-19 6:22

>>107
Yes, removal of features from one place and insertion of them in another place where they make more sense. The tokeniser doesn't need to parse the fields within a DOCTYPE, it just needs to figure out where the end of the tag is, which is really easy (but you wouldn't know just by reading the spec) - scan to the next '>'. The fields within it can be parsed at some later point, perhaps even in a different thread. The DOCTYPE is only used for an edge-case quirks-mode parsing decision but the way that's detected in the spec is ridiculously bloated (see http://www.w3.org/TR/html5/syntax.html#the-initial-insertion-mode; all those string constants are bigger than the whole tokeniser I have), so I'll probably end up just defaulting to quirks-mode off and letting the user push a button to toggle it if she feels the page doesn't look right...

Character references (&lt; &nbsp etc.) are another thing the spec tries to put into the tokeniser, but once again it's not necssary to parse them at this point to determine the boundaries between various pieces. Charref conversion can be done when strings get copied out of the input buffer and into the DOM.

>>108
2/3rds Rust and almost 1/3... Python!? The code I glanced at there doesn't look much simpler. Browsers are bloated because the whole thing is bloated. The HTML parser there contains a tokeniser...

https://github.com/servo/libhubbub/blob/master/src/tokeniser/tokeniser.c

...which is a pretty horrific 3kline+ piece of code, much of it duplicated, considering it came from one of the more "lightweight" browsers - NetSurf. On the other hand, Dillo's HTML parser (entire parser, tokeniser is integrated, around 4.1klines) is quite a bit nicer, although I don't know how HTML5-compliant it is:

http://hg.dillo.org/dillo/file/tip/src/html.cc

Name: Anonymous 2014-08-19 18:48

>>99
Make it in FORTRAN!

Name: Anonymous 2014-08-19 19:30

>>110
Shalom!

Name: Anonymous 2014-08-19 19:40

I've found you gays hate Cudder that much...

The fear of being identified as gay can be considered as a form of social homophobia. Theorists including Calvin Thomas and Judith Butler have suggested that homophobia can be rooted in an individual's fear of being identified as gay. Homophobia in men is correlated with insecurity about masculinity.[64][65] For this reason, homophobia is allegedly rampant in sports, and in the subculture of its supporters that is considered stereotypically male, such as association football and rugby.[66]

Name: Anonymous 2014-08-27 9:23

Name: Anonymous 2014-08-27 16:17

>>113
Shalom!

Name: Anonymous 2014-08-27 16:48

>>113
I don't hate him
Cudder is not gay tho, he is just a girl, thus making you transphobe thus showing that you are a tranny

Name: Cudder !MhMRSATORI 2014-08-31 11:59

HTML5 tokeniser + parser + DOM allocation + nice treeview GUI (looks like FF's DOM Inspector) in under 32KB! Only tokeniser is in Asm, rest is in unoptimised stupidly simple C.

Add CSS parser, box renderer, full network support, and it's still probably going to be under 256KB. Assuming the target is 1MB that still leaves 768KB for a JS interpreter, w00t w00t!!

Name: Anonymous 2014-08-31 12:30

>>117
Shalom!

Name: Anonymous 2014-08-31 13:53

>>117
That's impressive, Cudder-sama. But all that effort could go to defining a new web document standard instead. I don't see why anyone like you would write a browser based on the absolute shit ``technologies'' we have right now. You are much better than this.

You know nobody will use your lightweight browser, but you might get some attention if you propose a sane alternative to HTML, CSS and Javashit.

Name: Cudder !MhMRSATORI 2014-09-01 5:15

>>119
You're doing the equivalent of asking a C64 democoder why she chooses to continue working on a highly constrained 32-year-old platform. I'm more interested in redefining attitudes towards software complexity and engineering than reinventing the Internet, by taking a relatively complex standard and making a simple implementation of it.

HTML/CSS/JS is complex but my main argument is that complexity is far less than what contemporary implementations lead one to believe. Or perhaps that complexity is just from attempting to handle edge-cases that are not at all important in reality; that's why I'm trying to write a standards-compliant (or nearly so) browser, to prove what can be done.

Or if you want to be cynical, this is my "embrace, extend, and extinguish" strategy.

Name: Anonymous 2014-09-01 7:05

>>120
C64 democoder why she

This contradiction is bothering me.

Name: OD SAYS 2014-09-01 10:08

This thread most likely to be voted Thread Of The Year (TOTY).

Name: Cudder !MhMRSATORI 2014-09-01 11:45

Benchmarked the parser against Chrome and... it's ~50% faster. I wasn't even optimising for speed, only size (it is at least an order of magnitude smaller than WebKit's.) If I wanted to, I could probably embiggen it slightly and make it a lot faster, but I won't do that. Takes <16ms to parse this page...

http://i59.tinypic.com/uliti.png

Name: Anonymous 2014-09-01 13:39

>>123

still using windows 95 on Pentium?

Name: Anonymous 2014-09-01 14:37

>>117
Would you mind sharing?

Name: Anonymous 2014-09-01 14:40

>>120
You're doing the equivalent of asking a C64 democoder why she chooses to continue working on a highly constrained 32-year-old platform
Because it's fun and just a harmless e-penis contest? We're not in the need of more demos, though we do need better standards for the web. Stop wasting your time.

I appreciate your proof-of-concept browser but you're encouraging the web apping crowd to live on.

Name: Anonymous 2014-09-01 14:42

>>123
STOP USING TINYPIC
I HAVE TO ENABLE JAVASHIT JUST TO SEE YOUR FUCKING IMAGES

Name: Anonymous 2014-09-01 14:53

>>127

JS is the best that happened to programming since COBOL.

Name: Anonymous 2014-09-01 15:41

>>128
Only if you have a fetish for anal prolapses.

Name: Anonymous 2014-09-01 21:14

>>127
You are doing something wrong then, the image transmits just fine with a direct link.

Name: Cudder !MhMRSATORI 2014-09-02 9:43

>>124
Wine32 on a Nehalem.

More benchmark results... this time using a ~1MB HTML file (http://www.w3.org/TR/html5/syntax.html )

Tokeniser + Parser: 190-200ms (5.0-5.3MB/s)
Tokeniser + Parser, tags/comments only: 110ms (9MB/s)
Tokeniser + Parser, text only: 4250ms (243KB/s)
Tokeniser only: ~5.6ms (180MB/s)

Making DOM nodes and adding them to the tree is the slooooooooow part. That's the code which is currently in C.

That text-only result is interesting... when the input is 100% text with all the tags stripped out, looks like a strcat/strlen is the problem. That was dumb and stupid string handling.

Tokeniser is more than fast enough at the moment.

>>126
U MAD? Refer to >>120.

Name: Anonymous 2014-09-02 13:16

>>131
Shalom!

Name: Cudder !MhMRSATORI 2014-09-03 11:32

After fixing some stupid string handling...

Tokeniser + Parser: 168ms-170ms (5.9-6.0MB/s)
Tokeniser + Parser, text only: 24ms (41.4MB/s)

More than two orders of magnitude difference between strcatting and using stored lengths. The size increase of storing a length is tiny and the benefit is huge. The lesson here is: for performance, never use strcat(), always store lengths, and only strlen() once.

Name: Anonymous 2014-09-03 13:15

>>133
Is there any real programmer who uses strcat on real programs? There is no reason not to use strcpy (str + n, str2);

Name: Anonymous 2014-09-03 15:50

>>134
Enjoy you're buffer overflows.

Name: Anonymous 2014-09-03 16:05

>>134
Is there any real programmer who uses strcat on real programs? There is no reason not to use the lazy Text builder.

http://hackage.haskell.org/package/text-1.1.1.3/docs/Data-Text-Lazy-Builder.html

Name: Anonymous 2014-09-03 16:08

>>135
You can't have buffer overflows with something like this except if you are a homosexual salamander

Name: Anonymous 2014-09-03 17:05

>>133
I never liked null delimited strings.

Name: Anonymous 2014-09-03 20:36

>>138
What else do you suggest?

Name: Anonymous 2014-09-03 21:19

>>139
I guess he suggests something like this
struct string
{
char *str;
size_t size;
};


or the more generic
struct object
{
void *obj;
size_t size;
};


Or something like Pascal does
struct string
{
size_t size;
char str[];
};

Name: Anonymous 2014-09-03 23:39

>>139
I like the old DOS string functions that you called with interrupts, delimited with `$'.

Name: Anonymous 2014-09-04 3:31

>>141
"$-terminated strings should be good enough for anybody." — Bill Gates

Name: Anonymous 2014-09-04 5:46

The buck stops here.

Name: Cudder !MhMRSATORI 2014-09-05 11:50

This page, which has grown since the last time I benchmarked it (>>123), now takes just under 10ms.

>>134
memcpy() is superior.

>>135
If you can't do the absolutely trivial arithmetic needed for determining the right lengths ("maths is hard!") you should not be doing any programming at all.

>>140
For my use the best option is probably null-delimited with prefix-length, i.e.

char *to_nstr(char *str) {
long sl = strlen(str);
char *t = malloc(sizeof(long) + sl + 1);
if(t) {
*((long*)t) = sl;
memcpy(t+sizeof(long), str, sl + 1);
t += sizeof(long);
}
return t;
}


Read-only-compatible with existing C APIs, but contains a length that can be used by functions aware of it.

Name: Anonymous 2014-09-05 16:37

>>144
memcpy() is superior.
Only if you know the size of the second string

Name: Anonymous 2014-09-05 16:39

>>144
For my use the best option is probably null-delimited with prefix-length
Aha, so it's the same as the last option but a little more unreadable

Name: Cudder !MhMRSATORI 2014-09-06 10:52

After some more benchmarking, I've determined that just inserting nodes into the Win32 TreeView is taking up quite a significant portion of the time... with the same ~1MB file as before:

Tokeniser + Parser: 168ms-170ms (5.9-6.0MB/s)
Tokeniser + Parser, text only: 24ms (41.4MB/s)
Tokeniser + Parser - TreeView updates: 70ms (14.3MB/s)

59% of the time is spent in UI code, meaning the actual parser/DOM node creation is now over 4x faster than that of Chrome.

>>145
That's the whole point... lengths are stored so there shouldn't ever be a need to count, except when e.g. parsing things.

Further extension of the length-delimited string idea: at -4 from the pointer is the strlen, and at -8 is stored the allocated size, meaning I now get resizeable buffers (RBS) that are also downward-read-compatible with APIs expecting LDS and NTS. It's like an OOP class hierarchy, except without the bloat: RBS > LDS > NTS

>>146
Only if you're illiterate. The code actually looks far nicer in Asm than in C, because there's no type system that gets in the way; a ldstrlen() becomes a simple mov eax, [eax-4]. An rbldstrcat() looks like this:

char *rbldstrcat(char *rbs, char *lds) {
long rbsl = LDSTRLEN(rbs);
long ldsl = LDSTRLEN(lds);
rbs = rbs_append_size(rbs, ldsl);
memcpy(rbs + rbsl, lds, ldsl + 1);
LDSTRLEN(rbs) += ldsl;
return rbs;
}


Very similar to Delphi strings - too bad Delphi's compiler is terminally retarded (http://dis.4chan.org/read/prog/1318534478 )... MFC has CString which is similar, but they also put the fields in the wrong order so that LDS aren't compatible with them.

Name: Anonymous 2014-09-06 11:43

So what's the alternative?

Name: Anonymous 2014-09-06 19:07

>>148

gay sex

Name: Anonymous 2014-09-06 20:20

>>147
Shalom!

Name: Anonymous 2014-09-11 8:58

Name: Anonymous 2014-09-12 1:12

What about different character encodings?

Name: Anonymous 2014-09-12 7:27

>>152

I've yet to see any reason to use characters above 7-bit ASCII.

Name: Anonymous 2014-09-12 12:23

>>152
What about them?

Name: Anonymous 2014-09-12 21:42

>>154
Does Cudder's so-called browser handle anything outside ASCII?

In particular the HTML5 spec mandates an encoding sniffing algorithm.

Name: Anonymous 2014-09-12 22:43

>>155
HTML5 is garbage.

Name: Anonymous 2014-09-13 0:12

>>156
Why do you say that?

Name: Cudder !MhMRSATORI 2014-09-13 5:03

>>152,155
Anything ASCII-compatible such as ISO8859-x/Windows-125x, UTF-8, GB18030, Big5, Shift-JIS will Just Work™, the only non-ASCII-compatible encoding supported is UTF-16 which gets internally converted into UTF-8 (at the expense of another copying operation). Hence http://progrider.org/prog/read/1409320992 .

Name: Anonymous 2014-09-13 9:59

>>158
Shalom!

Name: Anonymous 2014-09-13 10:29

>>157
HTML is utter shit. Why do you even need an explanation for this?

Name: Anonymous 2014-09-13 17:44

Here's a retrospective from the TermKit guy about the project:

http://www.reddit.com/r/programming/comments/137kd9/18_months_ago_termkit_a_nextgeneration_terminal/

It also underestimated just how much of the Unix world is built upon the standard in/standard out paradigm (which it rejected), which is kind of ridiculous in an asynchronous, networked world. With deeper research, it was revealed how Unix magic like nested remote subshells and remote privilege escalation works only by accident, because the programs in between are too dumb to mess it up, not because of anything deliberate.

I'm not sure if he actually learned the lesson that "too dumb to mess up" is a good way to design things.

Name: Anonymous 2014-09-13 18:48

>>161
which is kind of ridiculous in an asynchronous, networked world.
Is it?

Name: Anonymous 2014-09-13 19:29

>>161

reddit
Shalom, Hymie!

Name: Anonymous 2014-09-13 22:18

They're the same people who reduce Apple products to the specs on the side of the box, and never bothered to notice that the reason MacBooks dominate geek conferences is because they have features that actually make life easier, like say, reconnecting to wifi in under a second when resuming from sleep.

Or maybe they're just clueless pseudoprogramming "web designer" hipsters worshipping the Apple cult?

Name: Anonymous 2014-09-13 22:45

Name: Anonymous 2014-09-13 22:54

>>164
Or maybe they're people who are more interesting in getting shit done than wanking off to an extra tenth of a percentage boost from tweaking their CFLAGS for the twentieth time.

Name: Anonymous 2014-09-13 23:01

>>166
That's Windows

Name: Anonymous 2014-09-13 23:05

>>167
What's Windows?

Name: Anonymous 2014-09-14 1:51

>>167
An annoying percentage of Windows software is released as debug builds. VS compiles debug executables with slightly different parameters, leading to differences in the execution of release builds. If the programmers weren't shit, that would not be an issue and they would never expose the undefined behavior that would cause such differences to show, but alas, they are shit. And when release builds fail they instead just ship the debug builds.

Name: Cudder !MhMRSATORI 2014-09-14 13:51

>>169
The idea of ever having a separate "debug build" is stupid, precisely for that reason. (This is different from a debug-version which may contain extra logging etc.)

>>161,164
When the first paragraph already contains crap like "best development practices had not been established" you know you're reading the thoughts of a poser or - at best - a mindless sheeple (sheepson?) who wants to "innovate" in the worst possible way. It's like he's lamenting the lack of a religion, because he wants to follow one.

Today, this means you still have to abort SSH sessions by typing magic sequences (return, tilde, period) rather than using out of band signalling
That just means your SSH software is bad (and you should feel bad about it...?)

catting binary files into your terminal can mess it up permanently
Have done this many, many times, and never had to buy a new terminal, so "permanently" is gross exaggeration. (I bet he doesn't even know there's a "reset" command...!)

melding modern interaction design with the technological underpinnings that can support them
What the bloody hell is this even supposed to mean? "Turn everything into a web app"?

the reason MacBooks dominate geek conferences is because they have features that actually make life easier, like say, reconnecting to wifi in under a second when resuming from sleep

Go to a real "geek conference" (i.e. a demoparty) and you won't see many Macs at all. Maybe a few Apple IIs. Even the C64s and ZXs are going to outnumber them. And "make life easier"? Maybe it's easier if all you do is obey what Apple wants you to do... like buying a whole new machine whenever a new one comes out or when something that should be trivially replaceable like a battery wears out because it's "more convenient" and you don't know how to use something as simple as a screwdriver... "We know better than you. Trust our word for it and keep buying our products, consuming, and making more bloated software so we can sell you more of our products!" What a load of bullshit.

Combine that with the first paragraph above, and "hipsters worshipping the Apple cult" sounds about right!

Name: Anonymous 2014-09-14 14:22

I just don't know anymore... Shit going down on Syria, World's economy still stagnant, the kikes yet live, and in my retreat to my only place of confort I can't even find solace online. Firefox is going down hill, half of the websites I visit give me some Apache Mod error, other websites like Motherless reject my user agent, there are no decent browser alternatives. I just want to browse the web, I just want to be able to use links2 in Windows as well and not be tied down by retarded design majors and their inconsistent shit online.

Name: Anonymous 2014-09-14 20:51

>>171
motherless
windows
kill yourself you disgusting freak

Name: Anonymous 2014-09-15 0:37

>>172
I-I need to use windows at work

Name: Anonymous 2014-09-15 1:11

>>169,170
I don't understand why anyone would ever want to have separate debug builds for a general purpose program. Just strip symbols from end users' packages and make diagnostic features dynamically selectable and you eliminate the whole set of bugs that arise from differing build configurations.

Name: Anonymous 2014-09-15 3:42

>>174
Or just avoid undefined behavior that differs.

Name: Anonymous 2014-09-15 7:35

>>175
Even with good coding practices, mistakes will slip through from time to time. It's easy to say, "Don't shoot yourself in the foot" but it's better to just not point the gun there in the first place. You're always going to have to try to reproduce issues that appear in a production build on a debug build anyway, if the two are distinct - if they're not, it's just one less thing you need to worry about.

Name: Anonymous 2014-09-15 9:36

>>176
Even with good programming* practices

Name: Anonymous 2014-09-15 9:47

>>176-177
Even with good apping* practices

Name: Anonymous 2014-09-15 10:33

Just know, >>177, you deserve >>178

Name: Anonymous 2014-09-15 13:04

>>176
If you can't deal with the minute differences between debug and release builds, then your shitty code is broken. And you've locked it into a single compiler, because it is too fragile to switch to another.

Crashes are good. It is the computer's way to warn you that the programmer was an idiot.

Name: Anonymous 2014-09-15 13:48

>>180
You're missing the part where not having multiple build types... means not having to deal with multiple build types. If all your builds have diagnostic features that can be enabled if necessary, you never have to tell users that are seeing a bug you can't reproduce to please install a debug build just to get some logs. If all builds have logging you just tell them to enable it and get on with solving the real problem.

Diverse compilation is good, but a good static analyzer is a better tool for catching the sorts of bugs an optimizer is likely to break. If you just build with a bunch of different compilers, you have no way to reliably ensure that at least one compiler will be aggressive enough to break the code that's bad.

Name: Anonymous 2014-09-17 21:40

other websites like Motherless reject my user agent
just fake it

Name: Cudder !MhMRSATORI 2014-09-29 6:23

Name: Anonymous 2014-09-29 21:01

>>183
size queen.

Name: Cudder !MhMRSATORI 2014-10-01 11:23

Random idea time... configurable relayout/repaint intervals.

Those pages full of blingy animated shit are horrible for power consumption because the browser is forced to constantly relayout/repaint stuff. There's even whole JS libraries to batch DOM updates to avoid this for the stupid apps that can't do it right themselves...

How about the browser itself throttling things - you don't need to compute and repaint as fast as the scripts are trying to make the browser do, and since up to ~100ms is not so noticeable, by default script-driven repaint intervals could be limited to one every 100ms. Those wanking "web designers" aren't going to like this since it makes animations look jerky, but who gives a shit... that's why this should be configurable - if you really, really want to play some inane JS game or something else that needs ultra-fast repaints, then you can turn it up (and see that your power consumption goes up, and battery life goes down as a result.)

Ditto for "smooth scrolling" (one of the worst ideas ever conceived) - unless I'm grabbing a scrollbar and dragging it, I'm not scrolling one pixel at a time, so why the fuck do they think I want to see the window repainted every time it scrolls 1 goddamn pixel!? If I'm scrolling by 10 pixels then just move the existing content by 10 pixels and repaint that 10-pixel gap. What a ridiculous waste of (GPU mostly) power.

(I could rant on and on about the idiotic trend of making UI elements behave like physical objects - with the exception of "inertial scrolling" which is genuinely useful on a touchscreen but only without that annoying "bounce-back" or "friction" - but that's not so browser-related....)

Name: Anonymous 2014-10-01 14:29

>>185
configurable relayout/repaint intervals.
Ditto for "smooth scrolling" (one of the worst ideas ever conceived)
I love you so much, Cudder-sama. You always bring logic to our irrational world.

I've used a trackball with inertial scrolling and I think it's an amazing mechanic that should be implemented in normal mouse wheels as well, but at the moment it's not very configurable and I don't like the sharp acceleration curve. Can this be done with software alone?

Name: Anonymous 2014-10-01 15:52

No Material Design for Cudder, so are you going to use iOS or Windows for mobile?

Name: Anonymous 2014-10-02 0:49

>>185
Something like this already happens for inactive tabs. Sorry to burst your bubble.

Name: Anonymous 2014-10-02 1:39

>>188
Where can I tweak this parameter? Please expand on this, I'm interested.

Name: Anonymous 2014-10-02 5:40

>>185
Why is it called smooth scrolling when it makes the scrolling laggy and jerky?

>>186
You might like greasymouse, available in the contrib directory of x.org's ftp server.

Name: Cudder !MhMRSATORI 2014-10-02 10:57

>>186
The whole idea of inertial scrolling is that you sense when the user takes the finger off the screen/touchpad and then continue scrolling at the same velocity; how do you propose that be done with a mouse wheel?

>>187
Android, but I'd rather not use a mobile device if I don't need to.

>>188
Inactive tabs (or minimised windows for that matter) shouldn't need any repainting.

>>190
It's "smooth" if you have enough GPU/CPU power to waste moving the existing contents and drawing each new line of pixels separately, but it still feels laggy because you're forced to scroll only as fast as the machine can keep up. There's no snappy ultra-responsive multi-pixel jumps when you scroll (which the "UX designers" seem to abhor...)

Name: Anonymous 2014-10-02 11:20

>>191
You can ``flick'' a mouse wheel same as a touchscreen.

Name: Anonymous 2014-10-02 12:54

>>192
Some mice have smooth wheels and it might make sense for them. Most use clicky wheels and it makes no sense because X clicks should result in 5X (or whatever the constant is for your setup) lines scrolled.

Name: why my anus is bloated 2014-10-02 14:17

your cock is in it

Name: Anonymous 2014-10-02 16:57

>>193
It depends on how fast your X number of clicks are input.

Name: Anonymous 2014-10-02 18:53

>>127
I agree, that shit is terrible.

However,

visit the page
open javascript console
var img = document.createElement("img");
img.src = "http://i59.tinypic.com/uliti.png";
document.body.appendChild(img);


then scroll down

>>130
It redirects to some shitty html page.

>>147
ribald strcat

Name: Anonymous 2014-10-02 19:22

>>196
If you don't want to use JS, this also works:

wget -U 'Mozilla/5.0' --referer='http://anus/get.html' http://i59.tinypic.com/uliti.png

Name: Anonymous 2014-10-02 19:26

Note: The redirect happens if you're using the HTTPS version of progrider. Since HTTPS strips referrer.

If there's no referrer, tinypic redirects to their shitty html/js piece of shit page.

Name: Anonymous 2014-10-03 9:20

>>198
$ nc i59.tinypic.com 80
GET /uliti.png HTTP/1.0
Host: i59.tinypic.com

臼NG

(bunch of binary data here)
$

Name: Anonymous 2014-10-04 16:43

>>199
$ nc example.com 80
GET /doubles HTTP/1.0
Host: example.com
X-Dubs: checkem
User-Agent: netcat

HTTP/1.0 200 CHECKED
Content-Type: text/doubles

<html>
<body>
<h1>nice dubs!</1>
</body>
</html>

Name: Anonymous 2014-10-04 18:27

check 'em

Name: Anonymous 2014-10-07 1:02

>>201
Nice base 200 dubs >>201-san.

Name: Anonymous 2014-10-10 21:38

>>191
Inactive tabs (or minimised windows for that matter) shouldn't need any repainting.

Right. What I was talking about is throttling the JavaScript timer frequency for inactive tabs, ala
https://bugzilla.mozilla.org/show_bug.cgi?id=633421
https://code.google.com/p/chromium/issues/detail?id=66078

I'm sure you'll implement something like this when you write a JS engine for your browser.

>>189
Where can I tweak this parameter? Please expand on this, I'm interested.
dom.min_background_timeout_value

Name: Anonymous 2014-10-10 23:01

>>203
If I ever write a browser, I'm not reimplementing the biggest shits in the broapping world known as JS and HTML.

Name: Anonymous 2014-10-10 23:30

>>204
JS
World's most widely deployed functional programming language son

Name: Anonymous 2014-10-11 10:07

>>205
I never said it wasn't.

Herpes is probably the most widespread STD. So what? It's still a fucking STD.

Name: Anonymous 2014-10-11 10:12

>>206
If I was G-d I would implement it.

Name: Cudder !MhMRSATORI 2014-10-11 12:45

So much work, so little time...

>>192,193
Flicking the mouse wheel just causes a series of scroll events that are indistinguishable from scrolling in a short burst. The smooth wheels generate scroll events the same way. Inertial scrolling requires detecting when the user has taken the finger away from the device so it can continue to scroll, and stop scrolling once the finger touches down again.

>>203
A setting buried in the horribly obscure about:config interface that only takes effect for background tabs, globally, is not quite the same thing as an easily accessible (probably via some menu item) control to modulate the current tab/window's background AND foreground update frequency.

So the question remains, is there a unique DOM event that would fire solely for this throttling, to warn the web app of the slowdown?

Amusing to see the "BUT MUH ANIMATIONS!!!" developers are complaining as usual...

On the subject of Firefox settings accessibility, it would be great if they added the possibility of adding any about:config item as a menu item, like Opera's Quick Preferences but far more flexible.

Name: Cudder !MhMRSATORI 2014-10-11 13:03

>>203,204
If this project ever gets that far I'll definitely be writing one. A browser that doesn't handle at least most of HTML5 and JS won't be so interesting even if it's much less bloated, because most people will just see it as something like a theoretical exercise. A browser that can work with most websites out there now, including the JS-heavy stuff, on par with other major browsers like FF and Chrome, but also much smaller and more flexible, will get noticed. I've mentioned this before in >>120, this is not about finding better protocols and web standards but about better implementations of them.

Name: Anonymous 2014-10-19 8:35

Is there real work being done on a non-bloated browser engine? (and that's feature complete)

Name: Cudder !MhMRSATORI 2014-10-20 6:41

>>210
real slow work. IRL is taking up too much time.

Name: Anonymous 2014-10-20 13:16

>>211
Would you mind sharing your work? Even Nikita has a github.

Name: Anonymous 2014-10-20 14:35

>>212
Github is the last bastion of bourgeois hipster chauvinist pseudo-intellectuals in cyberspace. If we could only nuke the site from orbit and take its inhabitants with it, the shackles of the Von Neumann era would disintegrate and we could finally move on with real, serious, honest-to-god programming.

Name: Anonymous 2014-10-20 14:52

>>212

IIRC Cudder had some imageboard with source code for some Anonix OS, which got merged with Temple OS afterwards.

Name: Anonymous 2014-10-21 1:54

>>213
Christ, it's just a git hosting site. Chill out bro.

Name: Cudder !MhMRSATORI 2014-10-27 6:05

>>212
Not yet... but you're free to beat me to releasing an ultra-tiny HTML5 compatible browser.

Name: Anonymous 2014-10-27 6:08

>>216
html5 technologies

Name: Anonymous 2014-11-01 8:14

>>216
Have you given any thought on how to implement CSS3 yet, Cudder?

At times I've entertained the thought of writing a fully-featured web browser for Plan 9, and what always stops me in my tracks is the CSS3 insanity. I can't conceive of how one could write a box layout engine that supports all those transformation/transition/gradient/box shadow effects without the code coming out looking more like a poor man's Macromedia Flash.

Name: Cudder !MhMRSATORI 2014-11-01 11:23

>>218
Yes, I'm leaning towards "not at all".

The animation stuff (http://www.w3.org/TR/css3-animations/ ) is conceptually easy as all it's doing is modifying properties periodically (and forcing a relayout/redraw), but it's still quite superfluous to the goals of this browser: display the useful content, minimise the eyecandy and extra fluff.

Transformations are also conceptually simple, but implementation is going to involve a lot of extra bitmaps to be rendered to and plenty of pixel-shoving, which would probably be better done on a GPU... again, not a really useful/important thing to have for just displaying documents.

code coming out looking more like a poor man's Macromedia Flash.
I'd rather write a low-bloat Flash-compatible plugin instead (and I actually have a piece of one written already, for a demo over a decade ago); SWF is a great format that Adobe really fucked up when they bought Macromedia.

Name: Cudder !MhMRSATORI 2014-11-01 11:58

Found this interesting chart of Chromium binary size... unfortunately it requires JS to work:
http://neugierig.org/software/chromium/bloat/

The HTML parser is 120.5KB, of which the tokeniser is over 40KB(!) and the tree construction is nearly 30KB. For some reason, there is an "HTMLToken.h" which is itself 2.8KB. The one I currently have is ~1KB tokeniser and 12KB tree construction.

Name: Anonymous 2014-11-01 14:27

let's make a new web browser in 4kb

Name: Anonymous 2014-11-01 16:18

>>219
Can you make a browser engine without all the CSS3 and HTML5 shit? Just something that can render text and pictures, place them on screen readably, and allows the user to control stuff like turning Javascript on/off and configuring proxies? No fucking gradients, graphic effects in CSS, videos, etc. Can you do that?

Name: Anonymous 2014-11-01 16:38

>>222
Can you?

Name: Anonymous 2014-11-01 16:46

>>222
How am I showing my epic three.js animations to my Reddit friends without web 3.0 technologies?!

Name: Anonymous 2014-11-01 19:27

>>222
How about pdf then?

Name: Anonymous 2014-11-01 19:33

>>223
No. I don't even know any assembly.

>>225
Not needed in a web browser. Download it and open in an actual PDF reader. Reading PDF in browsers sucks ass anyway, as it tries to download only a part of the pages and when you want to skip a lot of pages it makes you wait for them to download.

Name: Anonymous 2014-11-01 19:47

>>226
No. I don't even know any assembly.
You don't need assembly.

Name: Anonymous 2014-11-01 20:43

>>222

Most pages today use CSS3, so they will just not work.

Name: Cudder !MhMRSATORI 2014-11-02 15:54

>>221
http://web.archive.org/web/20070609230328/http://www.kakeeware.com/i_kb.php

Although that one is cheating a bit.

>>226
Agreed.

>>228
They just won't look the way the author intended, which is perfectly fine (a big NO THANK YOU to those idiots who think grey-on-black text is anything but completely unreadable...)

Name: Anonymous 2014-11-05 18:17

Cudder, why don't make your browser open-source so others can help with development, criticize, propose ideas, test for bugs, etc.?

pretty pls

Name: Anonymous 2014-11-05 19:10

>>226
You said to make a engine without anything that's used today. So I suggested to use pdf as replacement for html.

Name: Anonymous 2014-11-05 19:20

>>231
I don't know what TMZ's for pussies and housewives you go to, but most of useful sites I go to use just text, images and Javashit.

Name: Anonymous 2014-11-05 19:25

>>232
That's offtopic

Name: Check my straight flush 2014-11-05 20:30

>>233
Ottfopic.

Name: Cudder !MhMRSATORI 2014-11-08 4:44

>>230
It will be (public domain, in fact); there's just not much of any "source" at the moment besides a parser and a crude DOM viewer.

I'm also too busy at the moment so feel free to contribute... a tiny CSS parser and associated datastructures for keeping track of CSS rules would be the next step. Aim for CSS2.1 although there's a useful parsing spec for CSS3 which you can use.

Name: Anonymous 2014-11-09 18:08

http://www.phoronix.com/scan.php?page=news_item&px=MTgzNDA
It's faster because it is less bloated, even if you ignore the multithreading. Chrome's, Cudder's and netsurf's engine is even faster because they are even less bloated.

Name: Anonymous 2014-11-09 18:28

>>235
How the fuck is anyone supposed to contribute if they don't have the source to your code? Even if they did an independent CSS parser, there would be a huge impedance mismatch when you try to combine them later. You'd probably end up rewriting the whole thing anyway.

Stop being autistic and put a tarball up somewhere. You geezers never finish anything because you insist on perfecting it before you show anyone.

Name: Anonymous 2014-11-09 18:34

>>237
We should figure out a way to share code with each other without making it completely public (until an autist leaks it).

Name: Anonymous 2014-11-11 19:16

>>238
Setup some git repository and post the address here.

Name: Anonymous 2014-11-11 19:33

Name: Cudder !MhMRSATORI 2014-11-12 14:07

>>237
Contribute ideas, not code.

Name: Anonymous 2014-11-12 16:09

>>241
Shalom!

Name: Anonymous 2014-11-12 16:52

>>242
Shalom!

Name: Anonymous 2014-11-12 19:15

>>243
check 'em

Name: Anonymous 2014-11-12 20:34

>>241
Make it dependently typed, y'all. Embrace the future now. Ain't no dependently typed browser engines out there yet, right?

Name: Anonymous 2014-11-14 18:57

Error 200 OK

Name: Cudder !MhMRSATORI 2014-11-15 2:51

>>245
"dependently typed"? We don't need any of that academic wank abstract bullshite. All that'll do is introduce bloat.

Name: Anonymous 2014-11-15 7:07

>>247
>abstract
Shalom!

Name: Anonymous 2014-11-15 8:27

>>247
Actually, dependent types help reduce bloat. For instance, runtime array bounds checks become obsolete, which can lead to 10-20% of performance improvement.

Name: Anonymous 2014-11-15 12:13

>>249
runtime array bounds checks
Most of these are used by shitty programmers. You don't need them.

Name: Anonymous 2014-11-15 12:16

>>250
Most of them are baked into most compilers.

Name: Anonymous 2014-11-15 20:11

>>251
The only respectible languages are C and assembly.

Name: Anonymous 2014-11-15 20:16

>>252
no generics
respectable
LOL.

Name: Anonymous 2014-11-15 20:18

>>253
Define "generics" and explain why would I need them.

Name: Anonymous 2014-11-15 20:23

>>254
Duckduckgo it.

Name: Anonymous 2014-11-15 20:45

>>253
Fuck yeah C has generics. And real macros.

https://github.com/eudoxia0/cmacro

Name: Anonymous 2014-11-15 21:02

>>255
There is a reason you are being asked about your definition. DDG can't show what you believe.

Name: Anonymous 2014-11-16 7:27

>>257
Define a container that can hold several types of elements.
Define a fold function that works on several types of containers.
Can C do that without C "macros"?

Name: >>6 2014-11-16 9:25

>>258
Define a container that can hold several types of elements.
Like struct (and maybe with a enum "tag" and a union if you want to save space) or a void *.

Define a fold function that works on several types of containers.
http://bbs.progrider.org/prog/read/1403675318/10
Surely there are more examples.

Can C do that without C "macros"?
Yes as you can see.

Name: >>259 2014-11-16 9:26

I am not >>6, I have no idea how that >>6 was there.

Name: Anonymous 2014-11-16 9:48

>>259
int fn(void *, void *)
No automatic dispatch on the type of the container. Also, type-unsafe shit. Might as well use Lisp instead.

Name: Anonymous 2014-11-16 9:50

>>259
Also:
if (fn(&bp[i * size], arg) == 0)
bp[i * size]
This implies that the container is indexable and, what's worse, contigious. How are you going to fold/map a tree then? C is useless.

Name: L. A. Calculus !jYCj6s4P.g 2014-11-16 10:10

>>261,262

No automatic dispatch ...
DIS AINT UR FUCKIN TAXI SERVICE YA FLASHY PANTS RETOID, DIS IS PROGRAMMIN. IF U CANT HANDLE IT, GO RUN CRYIN 2 MOMMY

This implies that the container is indexable and, what's worse, contigious. How are you going to fold/map a tree then? C is useless.
ARRAYS R DA DATATYPE OF C. IF UR EVEN THINKIN ABOUT DOING UR FLASHY GOOTCHY FUNCTIONAL PROGRAMMIN SHIT WITH UR CUTE TREES N BUSHES U SHUD STAY DA FUCK AWAY FROM C N GO BAK TO BITCHING WITH DA OTHER LADIES ON ##programming ABOUT WICH LANGUAGE IS DA MOST /fa/

N STOP ASKIN TEENAGE GIRLS 2 DO DISGUSTIN SHIT, YA FUCKIN POOP SCOOPING RETOID. ALL DEY WANT IS A RIDE HOME, NOT TO FULFILL UR DISGUSTING KAWAII SAFARI HENTAI FETISHES.

Name: L. A. Calculus !jYCj6s4P.g 2014-11-16 10:11

O YEA, N GET DA FUK OUTTA MY THRED

Name: Anonymous 2014-11-16 10:19

>>262
You can easily modify it to work with any data structure.

Name: Anonymous 2014-11-16 10:59

>>263
Actually, even C++ has std::accumulate which is a generic fold. And C++ is hardcore, painful Sado-Masochistic programming just like you love. So C is a useless archaism even among the imperative posse. You should retire and watch Santa Barbara, gramps, not read the internet.

>>265
No, I can't.

Name: Anonymous 2014-11-16 11:03

>>266
Well, you can't, but other people can.

Name: Anonymous 2014-11-16 12:04

>>267
Only via macros which are bug-ridden, ad hoc implementation of generics.

Name: Anonymous 2014-11-16 16:16

You might be interested in this for your HTML engine:

https://ocharles.org.uk/blog/posts/2014-11-11-memo-html.html

Self-Memoizing HTML Rendering via Mutually Recursive Data Types

Name: Anonymous 2014-11-16 16:57

>>111
>>222
LUDICROUS TRIPS

Also sweet hexadecimal dubs, >>255-san, >>256-san.

Name: Anonymous 2014-11-16 19:01

>>262
You'd have to write a map function for trees (as you would for C++). Fold can be done using the visitor pattern.

Name: Anonymous 2014-11-16 19:38

>>271
So it would be a separate function specifically for trees? C is useless.

Name: Anonymous 2014-11-16 20:50

>>272
So you want to call a function but you don't want to know which one you're going to call?

Name: Anonymous 2014-11-16 20:50

>>272
Everybody uses C. Huskel? Who's that?

Name: Anonymous 2014-11-16 21:14

>>271
visitor pattern
Shalom!

Name: Anonymous 2014-11-16 21:26

>>262
Pass another function pointer as argument that each time it is called it will show the next element to be folded.

Name: Anonymous 2014-11-16 22:16

>>272
It's also a separate function in C++. They just look the same when you call it.

Name: Cudder !MhMRSATORI 2014-11-17 12:49

>>258-277
Traversing an array and calling a function on each element is something like ~5 bytes for the main loop:
array_fold_loop:
lodsd
call ebx
loop array_fold_loop


Calling a function is already 5 bytes, and then you still have to setup the parameters for it, so it's smaller and faster to just write the loop directly.

Traversing a binary tree (pre-order, nodes stored as [data, left, right]) is a bit less than 32 bytes, so it does make some sense to have this be a separate function if you're going to use it more than once:
tree_fold:
lodsd
call ebx
lodsd
test eax, eax
jz no_left
push esi
mov esi, eax
call tree_fold
pop esi
no_left:
lodsd
test eax, eax
jnz has_right
ret
has_right:
mov esi, eax
jmp tree_fold


But the tree structures I'm using for DOM/rendering can be traversed non-recursively, see http://bbs.progrider.org/prog/read/1406427616

>>269
All that looks like it's doing is essentially caching the results of rendering each subtree, which is not anything interesting.

One thing that I don’t yet understand though, is how this plays out with memory usage.
Oblivious dumbfuck... this is why software is so fucking bloated!

Name: Anonymous 2014-11-17 12:53

>>278
>bytes
Shalom!

Name: Anonymous 2014-11-17 17:49

>>272
I want to say fold(container) and have it work, no matter what type "container" is or the type of its elements is. That's fucking generics, if you didn't know: being able to define generic functions, functions that work on general stuff, not just on specific types.

>>277
If the call is the same, then that's one generic function with lots of instances. It's the same in Common Lisp, Haskell and any decent language. But if you have to waste your time on shit like fold_rbtree_double (as in C), then that's not generic, it's useless.

>>278
bytes
bytes
bytes
Programmers don't give a shit about "bytes", "bits", "cycles" or any of that sewer infrastructure that has the honor of running programs. Because wasting time on floor-scrubbery means having less time to actually write useful programs.

Name: Anonymous 2014-11-17 19:45

I think some of your design goals are at odds with each other, Cudder. GDI is ancient shit and it's only going to make your browser harder to port. A D3D or OpenGL renderer would draw significantly faster and allow you to easily render most of the page at once, significantly improving scroll performance (just a blit).

Leaning too heavily on Windows features in general is going to kill any chance of this making waves in the web "developer" community. They're all on OSX and Linux these days.

Name: Anonymous 2014-11-17 20:03

>>278
loop array_fold_loop
U MENA DEC RCX FOLLOWED BY JNZ array_fold_loop ???!??!?

Name: Anonymous 2014-11-17 20:26

>>281
GDI is ancient shit
Damn right. The Brotherhood of NOD is where it's at.

Name: Anonymous 2014-11-17 20:50

>>274
Do you like to eat shit, then? Because billions of flies can't be wrong.

Name: Cudder !MhMRSATORI 2014-11-17 21:49

>>280
Programmers don't give a shit about "bytes", "bits", "cycles" or any of that sewer infrastructure that has the honor of running programs.
Those are not true programmers, they're the head-in-the-sky academics who are so far from knowing what reality is that all they can do is come up with more resource-wasting "solutions" to non-problems.

Because wasting time on floor-scrubbery means having less time to actually write useful programs.
Say that when you figure out how much time you're wasting just waiting for your ultra-bloated system to do the stuff you want to do... now multiply that by everyone else using the same softare... because the id10ts who wrote the software you use followed the same entitled "my time is so precious I'd rather waste YOUR time and money" mentality... fucking retard.

>>281
Ancient but simple and works. I don't need 3D capability anyway. Maybe D3D or OpenGL could be faster, but I don't care because I don't think it's needed and it's quite a step up in complexity. I just want to see the faces on those mainstream browser developers when a pure and simple GDI-based solution blows away their bloated renderer that needs a several-times-faster GPU...)

For example, compare how to do something that should be simple in OpenGL, like rendering some vector graphics, and you find http://gamedev.stackexchange.com/questions/48034/how-do-i-render-a-filled-and-stroked-path-using-opengl which basically says "it's too hard", and the ONE function that GDI can do it with: http://msdn.microsoft.com/en-us/library/windows/desktop/dd145123(v=vs.85).aspx

As for porting, not so concerned - libXt/Xaw or whatever it's called on *nix should provide equivalent functionality on any system with X11. I don't care how hard it is to port because chances are if I want it to be efficient on a specific platform I'm going to have to use platform-specific things and end up rewriting a lot of the code to take advantage of that. Look at something like Dillo for example - I haven't tested it much on *nix, but on Windows it's far more bloated because it has to drag along its own *nix GUI libraries and doesn't even feel like a native application. Forget about making a lowest-common-denominator monstrosity that performs half-decently on a ton of platforms, concentrate on one platform first and others afterward.

Name: Anonymous 2014-11-17 23:11

>>285
Why do you insist on academics being the ones who care about ``understandable programs''? They're exactly the ones who care about microoptimizations and make programs unreadable and full of abstract bullshite.

Are you sure you're not mixing them up with the ENTERPRISE crowd?

Name: Anonymous 2014-11-17 23:41

I just want to see the faces on those mainstream browser developers when a pure and simple GDI-based solution blows away their bloated renderer that needs a several-times-faster GPU...
IIRC GDI is partly hardware accelerated (poorly, since it was never meant to be used that way) since Vista, so I can't see a GDI renderer ever beating a renderer that uses GL/D3D directly.

For example, compare how to do something that should be simple in OpenGL, like rendering some vector graphics
I thought you weren't going to implement the fancy shit like vector graphics and SVG?
The fact that you think bézier curves would be "the one thing that should be simple to implement in OpenGL" shows that you don't have any understanding of the graphics pipeline. GPUs are not magic graphics pixie dust, they're machines that eat vertices and shit pixels.
You can render them in multiple ways with OpenGL; on newer cards, tessellation shaders (and to a lesser extent, geometry shaders) are basically designed for turning bézier surfaces, the 3D equivalent of bézier curves, into triangles. So you could easily do the same thing in 2D. On older cards, you could do the curve->lines->triangles conversion yourself in software, or you could just put all of it on the slow path and render it all in software, like most people do for text. Point is, it's a choice that your application has to make and not something that belongs in DA STANDAD in any way.

And arbitrary path rendering and filling only gets more complicated from there. It's just not a strong suit for GPUs at all. https://en.wikipedia.org/wiki/Direct2D#Implementation

However, if you ignore the arbitrary vector SVG shit like I thought you would want to, then 99.99% of graphics rendering is going to be basic shit like rectangles, lines, circles, and scaled images, that any GPU can chew through with ease.

As for porting, not so concerned - libXt/Xaw or whatever it's called on *nix should provide equivalent functionality on any system with X11.
At least with GDI you have stability on your side, but it's pretty likely that the X11 libs are going to die in a few years when the Wayland/Mir switch happens.

but on Windows it's far more bloated because it has to drag along its own *nix GUI libraries and doesn't even feel like a native application.
There's a difference between not using a native UI for the "chrome" and not wanting the guts of your implementation tied to one platform.

Name: Anonymous 2014-11-18 0:47

>>287
The fact that you think bézier curves would be "the one thing that should be simple to implement in OpenGL" shows that you don't have any understanding of the graphics pipeline. GPUs are not magic graphics pixie dust, they're machines that eat vertices and shit pixels.

I hate to stick up for Cudder, but in the olden days we had some shitty yet remarkable support for analytic objects, which weren't described in verts. So it might just work.

However, if you ignore the arbitrary vector SVG shit like I thought you would want to, then 99.99% of graphics rendering is going to be basic shit like rectangles, lines, circles, and scaled images, that any GPU can chew through with ease.

Not so. Have you heard of floats, reflow? This shit is everywhere and it sucks. Once thats done, you sure can shit it out of a GPU pretty quick, but the GPU does the least of the work in the end so who cares? See also: https://github.com/servo/servo

Don't get me wrong, I think Cudder is crazy and GDI is awful but somehow I think that's probably the point.

Name: Anonymous 2014-11-18 2:38

I hate to stick up for Cudder, but in the olden days we had some shitty yet remarkable support for analytic objects, which weren't described in verts. So it might just work.

I believe most early graphics hardware basically consisted of one or two fast serial DSPs, so it wouldn't have been that weird for them to use a "software" rasterization method like a scanline rasterizer for splines/bézier curves/etc; this is essentially how they implemented triangle rasterization or anything else as well.

You can do anything you want with compute shaders now, but 1. it's not going to take advantage of the fixed-function hardware like the triangle rasterizer, and 2. you're not going to get good parallelism unless you need to render hundreds of bézier curves for some reason; the only legitimate usage I could think of would be high-quality GPU-accelerated font rasterization, which isn't a terrible idea come to think of it. So again, given that there are so many different ways to implement these things with their own tradeoffs, it makes little sense to bake it into an API that is supposed to be a thin shell over the hardware. The fixed-function pipeline is dead.

Aside: lol, Firefox wants to correct "GPU-accelerated" to "GNU-accelerated"

Not so. Have you heard of floats, reflow? This shit is everywhere and it sucks. Once thats done, you sure can shit it out of a GPU pretty quick, but the GPU does the least of the work in the end so who cares?

Because it can save CPU time that would be wasted on a task it isn't suited for while the GPU is mostly sitting idle, because doing very simple rendering on the GPU is going to use less power than doing the same task on the CPU, and because you have to go through the GPU at the end anyway so you might as well take advantage of it.

But hey, it won't run on grandthing Cudder's Win95 Pentium, so it's not acceptable.

Name: Anonymous 2014-11-18 3:39

I believe most early graphics hardware basically consisted of one or two fast serial DSPs,

That's not really the point. All cards can still do it (just not in "modern GL"), and the output quality is as good as the display can handle. If you're linking GL, you might as well use it.

GPU-accelerated font rasterization, which isn't a terrible idea come to think of it.

It's been done. It's neat, but it chews up your entire GPU with only a single column of text. The reflow on a modern web page (or desktop) is harsh.

Because it can save CPU time that would be wasted on a task it isn't suited for while the GPU is mostly sitting idle,

You do get a boost out of it, but it's tiny by comparison. For most of the page you have to construct the pixmaps on the CPU anyway. I don't think anyone would bother if they weren't already linking gl for use with webgl. PS. I hate to break it to you, but scrolling isn't just blitting, a lot of sites modify the DOM in scroll handlers. Yes it's stupid and I hate it but that doesn't change it.

Name: Anonymous 2014-11-18 4:28

That's not really the point. All cards can still do it (just not in "modern GL"), and the output quality is as good as the display can handle. If you're linking GL, you might as well use it.

I can pretty much guarantee you that they're emulating it on the CPU or in a shader. It may be easy to use the fixed function pipeline, but everyone's abandoned it for a reason. You can almost always do things better yourself.
Not to mention, you don't get any fixed function support on GL ES devices, nor in the newer GL or D3D contexts.

It's been done.

I'm aware of a library that precalculates all the glyphs into a texture and renders like a bitmapped font, but that's not exactly the same.

It's neat, but it chews up your entire GPU with only a single column of text. The reflow on a modern web page (or desktop) is harsh.

Eh, I don't see why i.e. FreeType would be any faster at rendering the glyphs.

You do get a boost out of it, but it's tiny by comparison.

[citation needed]

PS. I hate to break it to you, but scrolling isn't just blitting, a lot of sites modify the DOM in scroll handlers.

But Cudder-sama is ignoring those parts of the spec.

Name: Anonymous 2014-11-18 5:54

>>291
You're still missing the point. "You can almost always do things better yourself." Analytic objects? Really? They look really good in GL, for what they are at least. You're going to spend a lot of time doing a bad job of it, that's what you're going to do.

I'm aware of a library that precalculates all the glyphs into a texture and renders like a bitmapped font, but that's not exactly the same.

And not what I'm talking about. If I thought it was, I would have written it off as "looks like shit" and "we stopped using bitmapped fonts for a reason" immediately.

Eh, I don't see why i.e. FreeType would be any faster at rendering the glyphs.

Because merely rendering glyphs doesn't render text.

I forget what the exact problem was, but it was pretty fundamental. I think it had something to do with the amount of data required to represent the glyphs created a lot of tension, and used up a lot of the GPU. Sure, it was faster, but so much less efficient that it isn't really worth it to actually do it (i.e. you do want to draw graphics with your card, right?) Keep in mind you have kerning, reflow and all that stuff to worry about, and yes, you need to do it on the GPU or else you will just waste time copying data back and forth.

Someday I hope it works out well. It's not going to happen on today's hardware though. Moving on.

[citation needed]

If you really think compositing some pixmaps is so hefty when compared to rendering them on a CPU, I would love to hear all about how that's supposed to work. If you think you can do the rendering efficiently on a GPU I encourage you to try. Many people will thank you if it works.

I'll see if I can find you a citation though.

But Cudder-sama is ignoring those parts of the spec.

Fine, but: in that case you can do the same thing on the CPU. I know you still think compositing is so expensive (even when we're not doing blur and other effects, are we?) so there's probably not much in this line of discussion.

Name: Anonymous 2014-11-18 8:41

You're still missing the point. "You can almost always do things better yourself." Analytic objects? Really? They look really good in GL, for what they are at least. You're going to spend a lot of time doing a bad job of it, that's what you're going to do.

Graphics programming, motherfucker. No one cares if your result looks the same, we want you to do it as fast as possible. If you don't want to put the effort in, get the fuck out and become an HTML apper.

Because merely rendering glyphs doesn't render text.
I forget what the exact problem was, but it was pretty fundamental. I think it had something to do with the amount of data required to represent the glyphs created a lot of tension, and used up a lot of the GPU. Sure, it was faster, but so much less efficient that it isn't really worth it to actually do it (i.e. you do want to draw graphics with your card, right?) Keep in mind you have kerning, reflow and all that stuff to worry about, and yes, you need to do it on the GPU or else you will just waste time copying data back and forth.

Text rendering, not layout, kerning, etc. You don't really seem to know what you're talking about, but for the record, I'm talking about RASTERIZING GLYPHS, COMPUTING THE PIXEL COVERAGE OF BÉZIER CURVES on the GPU, and not anything else completely orthogonal to that goal.

Good fonts have kerning information built in, so that you don't need to rasterize the text to tell how the characters should line up. You just plow through the character widths+kerning info on the CPU to produce a stream of characters and their positions, put that in the pipeline, and let a shader running on hundreds of processing elements in parallel compute thousands of perfectly antialiased glyphs without breaking a sweat.

Name: Anonymous 2014-11-18 9:07

>>293
Dude, you're arguing against using a pixel perfect, debugged, optimized function of a library you're already linking in favour of rolling your own, for a task that's easy to fuck up.

Text rendering, not layout, kerning, etc.
It's not rendered text until you've done the rest. Sure, if you want to render glyphs, go ahead. They're pefectly usable individual glyphs that have no place being next to one another. If that's all you want, it's fine... and has nothing to do with anything.

Name: Anonymous 2014-11-19 7:08

this thread perfectly encapsulates all of our disfunctional behaviors.

Name: Anonymous 2014-11-19 7:24

>>295
ENCAPSULATE MY ANUS

Name: Anonymous 2014-11-19 7:26

Analytic objects?

Pffsh.

Big deal.

Man, I'm hungry.

Maybe I can get some pussy outside.

(movement begins to occur in my pants) grumble grumble (something is happening!) ROARRRR ROARRRRR ROARRRRRRRRRRRRRRRR!

Settle! Down, boy!

Name: Anonymous 2014-11-19 7:34

>>297
The reactions of our generation:

Ben Bitdiddle: Who's gonna walk outside with an erection lke that? hahaha

Alyssa P. Hacker: OMG! That poor kitten!

Lem E. Tweakit: That's not how you train a fucking dog, here, let me show you how! *Grabs the dog ...*

Name: Anonymous 2014-11-19 15:38

>>298
That's not how you fuck a training dog
FTFY

Name: Anonymous 2014-11-19 15:52

Alyssa is a dump ugly slut, Eva is much smarter and cute.

Name: Anonymous 2014-11-19 23:36

So, like we have a Fossil Repo now...:
http://progrider.org/fossil/login?g=/fossil/home

Why don't we upload the first mock up of the browser?

Name: Anonymous 2014-11-20 4:51

>>301
The browser doesn't fucking belong to you. Write your own.

Name: Anonymous 2014-11-21 0:37

>>302
You're so cute when you're mad cudder :3

Name: Anonymous 2014-11-21 2:30

>>303
Really though, >>302-kun is right, >>301-chan was being very presumptuous. There is no we or our on this, it's Cudder's browser, and if I know Cudder (which I do), she is never going to release it. Just like that softice killer, and that decompiler that she swears would destroy the industry if she released it. I'm sure her browser is very good and very fast (Cudder is actually very skilled), but it is going to stay on her hard drive until the end of time.

Anyway, we don't really have board projects. We all just do our own thing and come here to talk down to one another. If it were like it is at, say, /g/ or reddit, where everyone is presumed to be equals, there would be one person doing actual work, while a thousand others bitched and complained at him for not doing things they way they liked, or for not supporting their obscure bullshit platform. Either that, or there would be no work done at all (because they are talentless nitwits, but that's neither here nor there) and everyone would just argue about the name and logo.

Moving on to the next point in this frivolous and unnecessary post that will further clog up Cudder's vaporware thread, we probably should use the fossil repo more. Admin-kike was very nice to provide it. I tried for about five minutes to set it up to work through Tor, but got bored and started fapping to Suwako. I guess I can try again and put something in it.

Name: Anonymous 2014-11-21 2:38

>>304
I would put something up on it, but my projects will also rot on my various hard drives and usb sticks until they are destroyed.

Name: >>305 2014-11-21 2:41

However I would be open to sending copies of my code to some people here. And maybe even collaborating on something. But I would want the collaboration closed to just us. I don't want my gang stalkers to be able to find it, or infiltrate the group later by just clicking their way in.

Name: Anonymous 2014-11-21 10:10

>>306
Just pretend it isn't yours.
Put the project up there and continue updating (and accepting collaborating). Nobody needs to know the author.

Name: Anonymous 2014-11-21 11:17

>>307
I can pretend all I want that it isn't mine, but a part of my being will be in the project, and I'm not willing to share this with my gang stalkers.

Name: Anonymous 2014-11-21 16:16

>>308
Sounds like vaporware.
Will it ever be released as open-source?
I thought you were cool.

Name: Anonymous 2014-11-21 19:27

>>309
It puts me in a tough situation. I want all information to be free and I want to share my creations with the world. But there are also some terrible people in the world. For my own sake I want to deprive these people of knowledge about myself. So my contributions to the open net are limited.

Have you ever witnessed what happens when you are linked to your online life and you piss off some people? Cops going through your facebook posts and interpreting obvious satire as criminal extremism. Angry nerds finding your home address and ordering pizzas. Angry nerds finding out the route you use when you go for a run.

But regardless, you're a retard for judging the character of a person by whether or not they open source their software, RMS cultist.

Name: Anonymous 2014-11-21 21:42

I want all information to be free and I want to share my creations with the world
Nice

But there are also some terrible people in the world.
There are.

For my own sake I want to deprive these people of knowledge about myself
Do you consider a minimalist web browser to be "knowledge about yourself"?

So my contributions to the open net are limited.
What the hell?!

Have you ever witnessed what happens when you are linked to your online life and you piss off some people?
Yes, but what does that have to do with anything? Will your browser piss someone off? Will they link it to your real identity? Why the hell don't you just start contributing anonymously, without letting people know it's you?

Crazy bastard.

Name: Anonymous 2014-11-21 23:40

>>311
I'm not cudder, just so you know.

Do you consider [personal project] to be "knowledge about yourself"?
Yes. Any material about yourself online can be viewed and interpreted. A possible employer could look at my online work and come to some irrational conclusion and place judgement. Like if I do functional programming in my free time, then I must be one of those crazy haskellers that will want to change the company's code to be pure. Or I don't know how to program imperitively. These are trivial. At worst I become a target of investigation and police acuse my open source software of being ``illegal hacking tools''. Fuck them.

What the hell?!
Why do you care anyways? It's none of your business what I do with my free time.

Why the hell don't you just start contributing anonymously, without letting people know it's you?
If people want to find out who you are they'll analyze what you've posted. See the attempts on Satoshi (bitcoin). If I contribute to a project anonymously, I have to isolate all ideas and methods used in that project. If I accidentally reuse an identifying technique in another project directly associated with me, I'm linked to it. Coding conventions like spacing and variable names are also an issue, but easier to deal with.

Why the hell don't you just start contributing anonymously, without letting people know it's you?
Why would I? Give me a reason that makes it worth the hassle.

Name: Anonymous 2014-11-21 23:43

Coding conventions like spacing and variable names are also an issue, but easier to deal with.
Do it GNU style and you'll never have a problem with people linking you to your code.

Name: Anonymous 2014-11-21 23:49

>>313
I program in languages other than portable assembler. In these you create your own constructs and these become very unique to the programmer.

Name: Anonymous 2014-11-21 23:50

>>312
Yes. Any material about yourself online can be viewed and interpreted.
Just how odd is your programming style?

See the attempts on Satoshi (bitcoin)
Precisely, nobody's been able to do shit. If pretty much the entire world is busting their ass trying to uncover an anonymous programmer, why do you think a couple of faggots trying to uncover your identity through a browser will do any better?

Coding conventions like spacing and variable names are also an issue
Unless you do stupid shit like Nigger_Dicks-In_my_anus, there are at most four major variable naming schemes, namely FaggotCase, ngrvar, faggot_var or smug-var. Great, they just reduced the search space to 25% of all programmers, which is still a fuckton.

Name: Anonymous 2014-11-21 23:51

betterCase

Name: Anonymous 2014-11-21 23:58

>>315
Just how odd is your programming style?
Evolutionary.

Precisely, nobody's been able to do shit.
As far as we know.

If someone who is trying to deanonymize me is able to read my code, I've already made a mistake. I don't want it to come down to issues like coding style.

Maybe I'll write a compiler that compiles my code to standard C and never share the original source.

Name: >>315 2014-11-22 0:06

>>316
That's an element of the FaggotCase set.

>>317
I'll write a compiler that compiles my code to standard C
Please do.

Name: Anonymous 2014-11-22 0:07

>>317
Can you put that on github, please? I'd be interested in a code anonymizer.

Name: Anonymous 2014-11-22 0:11

>>319
I'll write one to suit my needs, which are likely different from yours. But if you promise not to post it elsewhere, I'll send it to you over a secure channel or something. I don't think I'll be able to boot strap it, and run the anonymizer on itself.

Name: >>320 2014-11-22 0:15

Well, you can share it, but only with people that you reasonably believe aren't trying to dox me. And the communication medium you use should reasonably protect the information from people who may be trying to dox me.

Name: Anonymous 2014-11-22 0:41

>>320
How can you trust him?

Name: Anonymous 2014-11-22 1:35

>>306
I understand how you feel. I once posted my website on w4ch and some passerby tried to dox me. I had fake information in the whois, but it was still unnerving to see someone repeatedly try to find 123 Fake St, Chovlsowisopo City, Texas for no other reason than to show off that they could Google ``how do I lok up dns info''. Then they complained that I had fake data on there and wanted to report me to the registrar. I want scared obviously, but it was so frustrating to have someone come into your home and start breaking shit because he thinks it makes him cool, then tell you all about how he's a super skilled cat burglar who's just trying to teach you a lesson.

That said, do you really have stalker gangs that can identify you based only on the style of your code?

Name: Anonymous 2014-11-22 2:02

>>322
I can't but it's still an improvement over posting it online for all to see. Let the data float around in circles rather than putting it all exposed to the world and giving a world a record of my code, its commit history, and a sequence of time stamps from commit times so they can attempt to infer which timezone I'm in. There's ways around these, but why bother when I'm doing it for free anyway.

>>323
Indeed.

That said, do you really have stalker gangs that can identify you based only on the style of your code?
As long as at least one organization in the world opposes anonymous authorship, every pseudo-anonymous author has a common stalker. I don't see that situation changing. The thing that matters is how much resources they have. If it's an angry nerd (like in your case) a horrendous faggot may look up dns information and do something pointless. But there are also very talented people who don't support anonymity. I wouldn't be surprised if there was a stylometry engine for source code.

Name: Cudder !MhMRSATORI 2014-11-22 16:47

What a long thread this has become...

>>287
GDI has been hardware-accelerated since at least Windows 3.x (I have the SDK to prove it.) Some idiots at MS fucked things up with Vista, but GDI-accelerated blits are back with Win7 and I believe they are there in Win8 too.

Name: Anonymous 2014-11-22 18:00

>>325
Can you put your browser on the fossil repo, please? Or are you crazy like the guy above, thinking people will anuslyze your code and link it to your offline persona?

Name: Anonymous 2014-11-22 18:14

Even sharing your binary will give many information about you:
1: The compiler you used
2: The arch you used
3: The version of the compiler you used
4: Your OS, Distribution or even if you compiled the compiler yourself
5: The time you compiled it
6: The options you passed to the compiler
7: Many information about the version of the linked libraries
8: Symbols and shit
etc

Do not forget that for a software to be free you only need to give the source to the people that already have the binary.

Name: Anonymous 2014-11-22 18:28

>>325
[i]>[i]SDK
Shaloooom[i]![i]

Name: Anonymous 2014-11-22 19:00

>>328
You could just put a space in front of the >

Name: Anonymous 2014-11-22 23:05

space dick king

Name: Anonymous 2014-11-22 23:08

>>327
Compile from a Live CD then. You sure are paranoid.

Name: NSA 2014-11-22 23:19

You can run, but you can't hide.

Name: Anonymous 2014-11-22 23:25

Compile from a randomly configured virtual machine.

Name: Anonymous 2014-11-23 0:13

>>332
Like the NSA would care about an anoynmous half-assed implementation of a shitty markup language and a scripting ``language'' pulled out of a Jew's ass, kid.

Name: Anonymous 2014-11-23 1:23

>>333
Nice trips bro

Name: Anonymous 2014-11-23 10:21

>>335
Thanks

Name: Anonymous 2014-11-23 15:28

YOU HAVE BEEN VISITED BY LE GREEN SAD NEGRO FROGE OF SADDNESS
REPOST THIS IN 100`000 threads or be a frog!

`
████████ ██████
█░░░░░░░░██ ██░░░░░░█
█░░░░░░░░░░░█░░░░░░░░░█
█░░░░░░░███░░░█░░░░░░░░░█
█░░░░███░░░███░█░░░████░█
█░░░██░░░░░░░░███░██░░░░██
█░░░░░░░░░░░░░░░░░█░░░░░░░░███
█░░░░░░░░░░░░░██████░░░░░████░░█
█░░░░░░░░░█████░░░████░░██░░██░░█
██░░░░░░░███░░░░░░░░░░█░░░░░░░░███
█░░░░░░░░░░░░░░█████████░░░█████████
█░░░░░░░░░░█████ ████ ████ █████ █
█░░░░░░░░░░█ █ ███ █ ███ █ █
█░░░░░░░░░░░░█ ████ ████ ██ ██████
░░░░░░░░░░░░░█████████░░░████████░░░█
░░░░░░░░░░░░░░░░█░░░░░█░░░░░░░░░░░░█
░░░░░░░░░░░░░░░░░░░░██░░░░█░░░░░░██
░░░░░░░░░░░░░░░░░░██░░░░░░░███████
░░░░░░░░░░░░░░░░██░░░░░░░░░░█░░░░░█
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█
░░░░░░░░░░░█████████░░░░░░░░░░░░░░██
░░░░░░░░░░█▒▒▒▒▒▒▒▒███████████████▒▒█
░░░░░░░░░█▒▒███████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█
░░░░░░░░░█▒▒▒▒▒▒▒▒▒█████████████████
░░░░░░░░░░████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█
░░░░░░░░░░░░░░░░░░██████████████████
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█
██░░░░░░░░░░░░░░░░░░░░░░░░░░░██
▓██░░░░░░░░░░░░░░░░░░░░░░░░██
▓▓▓███░░░░░░░░░░░░░░░░░░░░█
▓▓▓▓▓▓███░░░░░░░░░░░░░░░██
▓▓▓▓▓▓▓▓▓███████████████▓▓█
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█

Name: Anonymous 2014-11-23 15:56

>>337
He's either green or negro, it can't be both!
Or do you mean literally green (in colour) and figuratively negro (in behaviour)?
You should pay more attention to your posts; people won't be able to follow your thoughts if you don't give enough explanation.
You fucking faggot.

Name: Anonymous 2014-11-23 16:18

>>338
ou
Oh, you!

Name: Anonymous 2014-11-23 16:39

>>338
Or figuratively green (in behaviour) and literally negro (in colour).

Name: Anonymous 2014-11-23 16:54

>>340
No, that's not possible. I can see him and he's green in colour.
Did you mean negro figuratively or not? That's all we need to know. You should really work on your conversation skills, faget. It'd help us understand you better.
Negro and green?! It can't be literally both at the same time!

Name: Anonymous 2014-11-23 21:08

But "literally" can mean anything you want it to these days.

Name: Anonymous 2014-11-23 23:43

>>342
It can't! Just because the retards don't know it's meaning and use it incorrectly, it doesn't mean the word lost its true significance. Stop unironically butchering the language!

Name: Anonymous 2014-11-24 2:19

>>343
From a linguistic point of view, you're wrong. Words change meanings over years based on how society uses them. There are plenty of words that no longer mean what they used to. "Scene" for instance, comes from the Greek word for "tent." The word "meritricious" means "unnecessarily ornate", when it originally meant "related to prostitutes."

Name: Anonymous 2014-11-24 3:08

>>344
Yes, those words have changed meanings from one thing to another unrelated one, but their old and new meaning usually don't imply any kind of contradiction.

On the other hand, "literally" went from meaning "literally" to meaning "figuratively", which is the exact opposite of the old meaning. Now tell me, how many times has this happened in history? I'm guessing none.

Name: Anonymous 2014-11-24 3:15

>>345
You're gonna be so chuffed when you find out how wrong you are.

Name: Anonymous 2014-11-24 3:36

>>344
From a linguistic point of view
I see your bluff, dumbass.

Name: Anonymous 2014-11-24 3:37

>>346
Care to provide any examples? I hope I don't live in a world where "nigger" will be used as a slur for well-adjusted white people in the next few years just because "language evolves".

Name: Mr. ``linguistic'' 2014-11-24 3:38

i call it too, nigger

Name: Anonymous 2014-11-24 3:40

>>348
well-adjusted
mal*

white people
rain forest monkeys and eurotrash

Name: Anonymous 2014-11-24 3:41

>>350
Did you move to America, Krueger? What does Yannick's dick taste like? Please tell us.

Name: Anonymous 2014-11-24 7:37

literally literally means figuratively now, just accept it.

Name: Anonymous 2014-11-24 10:15

>>352
Somebody didn't take their logic 101 class, stupid nigger.

Name: Anonymous 2014-11-24 17:01

>>345
Off the top of my head, the word "irony" and its derivatives. Furthermore, "terrible" and "incredible." (Originally meaning "inciting terror" and "unbelievable.")

>>347
You're right, I should have said a descriptivist linguistic point of view. There are still linguists who share >>343-kun's philosophy. They are wrong.

Name: Anonymous 2014-11-24 17:03

Dbus. Check em.

Name: Anonymous 2014-11-24 18:57

Fucking retards, what non-problem are you arguing about this time? You'd be better off reading about datatypes a la carte by Wouter Swierstra. That's some real power there.

Name: Anonymous 2014-11-24 19:31

>>356
This is a serious off-topic discussion.

Name: Anonymous 2014-11-24 22:50

>>356
We re-implement Extensible Effects within `Data types à la carte' to demonstrate the difference with the Swierstra's original approach. It turns out that when it comes to effects, Data types à la carte are not extensible or composable. The insight from the Category Theory of evaluation as catamorphism proved misleading.

Name: Anonymous 2014-11-24 22:53

>>358
We accept the inconveniences of ALCarte. With the superficial differences eliminated, with the extensible effects being `just' an ALCarte library, a gap emerges. The farther we look into it, the deeper it becomes, separating the two approaches by the modularity and compositionality, or the lack of it. The gap goes to the differences in design. The elegant ideas of catamorphisms and algebras, central to ALCarte, seems to have been counter-productive.

Name: Anonymous 2014-11-24 22:58

>>359
elegant ideas of catamorphisms and algebras ... counter-productive

Well, ain't that the breaking news no one expected. Academic faggots have tied their dicks in a knot.

Name: Anonymous 2014-11-24 23:33

I always knew type systems would turn out to be snake oil.

Let's go back to the days of BLISS and B, where everything is a word.

Name: Anonymous 2014-11-24 23:56

>>361
Having a new processor where byte = word and word >= 48bit would be nice.

Name: Anonymous 2014-11-25 0:03

>>362
You want 8 to be >= 48?

Name: Anonymous 2014-11-25 0:13

>>363
Byte ≠ 8 bits in every architecture. You are thinking of octet.

Name: Anonymous 2014-11-25 0:30

>>354
Fucking annoying stupid undergrad.

Name: Anonymous 2014-11-25 0:35

>>358
What does any of that shit have to do with 1s and 0s?

Name: Anonymous 2014-11-25 0:38

Name: Anonymous 2014-11-25 0:45

>>354
Incredible still means unbelievable. Unbelievable still means unbelievable.

You're confusing the figurative connotation of a word with its direct opposite. Something can be literally unbelievable
(space niggers shitting dicks on the moon)
or figuratively unbelievable
(you're so dumb/hot it's hard to believe, but it's not like I don't trust my personal judgment because I don't mean it in a literal sense).

Something can be literally terrible
(Nikita's mom inspires fear even amongst Putin's cabinet)
or figuratively terrible
(This quality I'm judging right now is so deep it almost scares me, but it's nothing serious so I have nothing to be afraid about)

Are you implying the current use of "literally" is somehow a figurative use of the original word? How can something be figuratively literal anyway?

Name: Anonymous 2014-11-25 0:47

>>367
I remember a thread about him!

Name: Anonymous 2014-11-25 0:50

For you fags who praise the niggers' idiocy and call it ``language evolution'', what word is one supposed to use now if one needs to convey the concept of wanting a phrase not to be interpreted figuratively?
Huh?!

Name: Anonymous 2014-11-25 1:01

>>370
You can still use literally. Just because a word gains a new meaning doesn't mean the old meaning magically disappears, unless the old meaning becomes replaced by other words (like "dumb" and "gay", for example.) Given that literally is used in academic contexts, that's not likely to happen.

Also, since we're talking about language evolution, I'd like to point out that you used the phrase "wanting" in the context of "to desire", when that word originally meant "lacking." If the Shakespearian age prescriptivists were here today, they'd shun you for using "want" when you meant "will" or "wish."

Name: Anonymous 2014-11-25 1:16

Typical academia nihilists and their worship of the inferior masses (niggers and their skittles) and their non-progress. Nigger value of arbitrary change. Commie retards. muh gender queer power studies fuckin evil prascraptavists muh relativity muh subjectivism oy vey evil theists and their objective values approach! get out the nigger dicks!

Name: Anonymous 2014-11-25 1:18

logic is arbitrary
these computers and their processors are magic and we can do anything with them
typetheorists.jpg

Name: Professor Shlomo Goldberg 2014-11-25 1:19

>>371
prescriptivists
Good goy.

Name: Anonymous 2014-11-25 1:21

steven ``kike'' pinker is a jew
WHO WOULD OF THOUGHT
Sexual selection confirmed to be a jewish invetion.
implying peacocks have anything to do with humans
implying high percent of gene relation with chimps (niggers?) doesn't actually end up proving you wrong and showing that genes have nothing to do with human psychology

Name: Anonymous 2014-11-25 1:24

high level languages are a jewish invention

Name: Anonymous 2014-11-25 1:29

>>376
Eigo is ultimately based on Jewgo

Name: Anonymous 2014-11-25 4:58

>>327
1. Can be fixed with just the evaluations optimized: Flags
2. Only if really needed on the type of OS, like RTOS and embedded devices. What this really needs is the list of dependencies.
3. Can be removed. Usually not recommended for validations. On a Mass distribution, required (MDr). Personal binaries (PB), no .
4. Same as 2.. Can be removed. MDr, PB up to you.
5. Can be removed. Better system uses version with hash of "update." E.g.: version control systems, delta journal filesystem, GPG signatures, etc..
6. Required, if not binary fails. But with it you can replace many of the above issues.
7. Read 6.
8. Read 2.

Most of these are a personal user case scenarios versus mass distribution, where you HAVE TO notate these things. You can, if you want, tailor your own modified distribution of some base, like the multiple debian clones, and tailor it with the above solutions, for personal use.

At the end of the day, Jailing your applications with access controls is all you really need to do. X binary does not need to know or touch Y.common.dependencies, which they both share. X only knows the locations of a "common" directory where it can find X.dependencies. But Y Binary on it's own jail cannot, under any circumstance, know X binary called common.shared.dependencies. Only the shared.common.directory daemon knows X and Y asked for it, and it tells the AC deamon such, logs it and hashes it.

IoW: Stop using defaults, you silly goose. But thank you for insight. Never thought of this, until now.

Name: Anonymous 2014-11-25 5:54

>>368
Yes, something incredible is by extention unbelievable, but nobody says "I don't believe you. You're being incredible." Likewise, nobody says "I'm so scared because that was terrible!" The two words have evolved different meanings. Incredible has come to be synonymous with amazing. Terribe has come to be synonymous with bad. If I translated "nomen dei terribilis est" as "God's name is terrible", I'm sure there would be plenty of christians offended by that usage.

Furthermore, as I pointed out on the /lounge/ discussion of this same topic, the word literally itself is a figurative usage. The word literally means "pertaining to letters." (From the Latin 'litteralis", "of letters", from "littera", "letter") Its usage outside of letters is by extension, and therefore, figurative. I also pointed out that etymology does not dictate meaning, but it is nonetheless an interesting note to add, especially since you suggested that word literally can't be used figuratively.

Name: Anonymous 2014-11-25 8:30

Terrible! *pisses pants*

Name: Anonymous 2014-11-25 20:53

Did tdavis just join this thread?

Name: Anonymous 2014-11-26 14:53

>>365
Stop being so uneducated and stupid please. Just accept the facts.

Name: Anonymous 2014-11-26 15:51

>>382
Postmodernist.

Name: Anonymous 2014-11-26 18:45

>>379
etymology does not dictate meaning
Well of course it doesn't. Meaning dictates meaning. When you use words wrong, you're just spouting nonsense.

Name: Anonymous 2014-11-27 4:29

>>384
What was your point in agreeing with me?

Name: Cudder !MhMRSATORI 2014-11-27 15:25

>>327
Try determining those 8 things you listed from this binary (base 64'd):

TVogAAEAAAACAAMAUEUAAEwBAQAAAAAAAAAAAAAAAADgAA8BCwEAAAACAAAAAAAAAAAAADQQAAAA
EAAADAAAAAAAQAAAEAAAAAIAAAQAAAAAAAAABAAAAAAAAACqEAAAAAIAAAAAAAACAAAAAAAQAAAQ
AAAAABAAABAAAAAAAAAQAAAAAAAAAAAAAABgEAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ABAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAudGV4dAAAAKoAAAAAEAAArAAAAAACAAAA
AAAAAAAAAAAAAAAgAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQ
EAAAAAAAAEJ5ZSB3b3JsZCEAAEJ5ZQBIZWxsbyB3b3JsZCEAAAAARmlyc3QgcHJvZwAAVos1ABBA
AGoAaCgQQABoGBBAAGoA/9ZqAGgUEEAAaAgQQABqAP/WXsPMzMyIEAAAAAAAAAAAAACeEAAAABAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAkBAAAAAAAAC+AU1lc3NhZ2VCb3hBAFVTRVIzMi5kbGwAAAAA

Name: Anonymous 2014-11-27 19:47

>>327,386
Boy, this will be interesting.

Name: Anonymous 2014-11-27 20:22

>>378
1. Can be fixed with just the evaluations optimized: Flags
What do you mean? Asking the compiler to optimise the evaluations?

5. Can be removed. Better system uses version with hash of "update." E.g.: version control systems, delta journal filesystem, GPG signatures, etc..
Still in binary if you made use of __DATE__ and __TIME__.

8. Read 2.
They are in my binary when I compile with default gcc without using a RTOS.

4. Same as 2..
You mean same as 3

Since most people use the default options or some popular options, using most of the flags will make NSA know what binaries belong to a specific author. This is the biggest problem. If NSA sees the "GCC (Debian 4.2)" missing they will know it's YOU and they will be able to find other binaries made by you.

There are many other stuff that may un-anonymise you, for example if you use only fgetc instead of getc and getchar, they will try to connect it with other binaries that do that.

>>386
How should I know?

Name: Anonymous 2014-11-27 21:39

>>386
If that was true, DRM wouldn't exist. You would be able to create a unique encoding for every media file and put it up for download in a bundle with its unique decoder. Then the pirate and downloader would be able to claim that since it's just an random bytestream (i.e. not a media file in any widely known codec), it's not a media file and doesn't violate any copyrights.

But that doesn't happen. So you're wrong.

Name: Anonymous 2014-11-27 23:11

>>388
He can just put in the most widely used flags regardless of what actual options he used.
/thread

Name: Anonymous 2014-11-27 23:19

>>390
It still has problems.

Name: Anonymous 2014-11-27 23:21

>>388
1. instead of having the compiler name in an executable file formats, just have compiled so it does not have any of that info. Making sure it is "generically" optimized.
5. Nope, you can remove __DATE__ and __TIME__ entirely, and just output a revision hash.
8.
They are in my binary when I compile with default gcc without using a RTOS.
Default, keyword there. Why I said you need to recompile using flags for more anonymity about it's source origin. Symbols can technically be done away with on any binary. Most flags and dependency calls can be anonymized too, by just the calling required hash of said Symbols and dependencies.

Even then, you are only identifying the binary with it, not the owner of the OS.
4. No, 2. The OS and distribution are always targeted for an architecture, always. If the binary has an OPcode from another arch it will horribly fail, even if you don't label the binary at all. You don;t even need to mark the OS and distribution, the binary will fail if it it's not running in the proper OS with it's dependencies. No need to mark the binary

Since most people use the default options or some popular options,
We are no most people, now, are we?

using most of the flags will make NSA know what binaries belong to a specific author.
Actually, if everyone is using the defaults to everything, it will make it worse for any intruder to distinguish it from another person that ran with the defaults. NSA included.

If NSA sees the "GCC (Debian 4.2)" missing they will know it's YOU and they will be able to find other binaries made by you.
And, that's the point of spreading a distribution, so that more than one person runs the same/similar system, making it difficult to distinguish it from others following your example. Why do you think people sharing files has done? Make one user more identifiable than the next by doing the same another has done?

if you use only fgetc instead of getc and getchar, they will try to connect it with other binaries that do that.
That's if you let the system poll the binaries in your system, like an improperly jailed system is (like those not jailed at all). Sure, being having a ``different'' scheme of binaries than the norm identifies you, but so does the simple MAC address or serial numbers of your device, which is the real threat to anonymity.

Also, try Cudder's Challenge: >>386
Simple raw binary, I assume assembled, not compiled.

Name: Cudder !MhMRSATORI 2014-11-28 15:37

>>392
You are already wrong.

Didn't realise it was 386GET!

Name: Anonymous 2014-11-28 17:19

>>393
Shalom!

Name: Anonymous 2014-11-29 22:11

Name: Anonymous 2014-11-30 9:01

>>395
LOL
Argument type Return type
C++ (since 1998), Java (since J2SE 5.0), Scala, D Invariant Covariant
C# Invariant Invariant
Sather Contravariant Covariant
Eiffel Covariant Covariant


Not one of the mainstream languages gets it right. Only Sather which I haven't even heard about prior to readint this article. All corporate languages are shit.

Name: Cudder !MhMRSATORI 2014-11-30 16:29

>>395,396
WTF is this OOP bullshit?

Name: Anonymous 2014-11-30 16:59

>>397
Jewish shit. Just like you!

Name: Anonymous 2014-11-30 21:11

KHTML is the promised land.

Name: Anonymous 2014-11-30 21:30

>>399
KHTML is cut from the same exact cloth as all the other garbage. It goes all the way back to the overwrought compiler architectures used to build them. People these days don't understand the conceptual differences between a preprocessor, a compiler, a linker, and an assembler. These are separate phases and they need to be written as separate programs, and the language designer needs to refrain from doing the work of one phase while performing another.

Name: Anonymous 2014-11-30 23:07

Instead of making a new special browser, why not make different clients for different things?

Name: Anonymous 2014-12-01 3:42

Name: Anonymous 2014-12-01 4:24

>>402
They could have written it in assembly and it would be twice as fast.

Name: Anonymous 2014-12-01 8:21

404 NOT FOUND GET

Name: Anonymous 2014-12-01 8:31

>>403
The problem is, picture an ant walking across your garage floor, trying to make a straight line of it. It ain't gonna make a straight line. And you know this because you have perspective. You can see the ant walking around, going hee hee hee, look at him locally optimize for that rock, and now he's going off this way, right?

Name: Anonymous 2014-12-01 10:24

>>405
GPS for ants.

Name: Anonymous 2014-12-01 10:41

>>406
Yes, and it's called a "sufficiently smart compiler".

Name: Anonymous 2014-12-03 4:02

Yes, and it's called a "sufficiently small penis".

Name: Anonymous 2014-12-03 19:50

Just realized I can't right click my scroll bar in firefox. This is extremely annoying. Thanks for making me realize this OP

Name: Anonymous 2014-12-03 20:36

>>409
You can do it, 頑張れ!

Name: <<<=== Check 'em 2014-12-03 20:50

I AM THE MOST FUCKEN NGGER MATURE

Name: Anonymous 2014-12-03 23:54

>>411
Nice dbus br0 xD

Name: Anonymous 2014-12-04 0:29

413st for homestuck

Name: Anonymous 2014-12-04 2:41

Name: Anonymous 2014-12-04 2:52

>>414
A lisp browser using WebKit
It uses webkit, so it's nothing useful.
Why do you need a thread (http://progrider.org/prog/read/1417664167 ) for this if you posted it here?

Name: Anonymous 2014-12-09 19:28

Why don't you help Dillo instead?
http://www.dillo.org/Plans.html

Name: Anonymous 2014-12-09 19:34

Name: I'M A TEAPOT !MhMRSATORI 2014-12-10 14:14

>>416,417
Mentioned in >>110. Dildlo's parser is a bloody mess - just look at how it parses attributes - by scanning the whole damn tag every time. It's also not very HTML5-compliant either.

Name: Anonymous 2014-12-10 14:29

tl,dr: It's not perfect. Therefore, it's completely worthless.

Name: Anonymous 2014-12-10 14:41

>>418
Why not revamp the attribute parsing and send the patch to the developers?
And looks like they are working on HTML5, they have just added HTML5 character references for version 3.1.

If even then you aren't satisfied, why not fork it? It's a good starting point, just keep what's great and ditch what isn't. Simple.

Name: Anonymous 2014-12-10 14:42

>>420
You didn't make this post about marijuana?

Name: Anonymous 2014-12-10 14:43

Can you please make your web-browser source available so we can analyse it, test and send patches?
Just use cgit or something http://git.zx2c4.com/cgit/

Name: Anonymous 2014-12-10 14:45

>>421
I didn't. Why would I?

Name: Anonymous 2014-12-10 14:49

>>423
Because all posts should be about marijuana. Also, check my palindrome get.

Name: Anonymous 2014-12-10 14:50

>>424
Nice get! Congratulations.

Name: Anonymous 2014-12-10 15:10

>>420
It's a good starting point
It's only a good starting point if it's actually good and already does what you want it to do.

Name: Anonymous 2014-12-10 19:05

>>426
Doesn't it?

Name: Cudder !MhMRSATORI 2014-12-11 15:59

>>426
+1

>>420
Because then I'd have to rewrite a whole lot more than that piece. I have a parser already (>>123). Also, C++.

Name: Anonymous 2014-12-11 20:03

>>428
Can you share your parser, please?

Name: Anonymous 2014-12-11 20:24

>>429
Can you shave your parses, please? 'Cause those pubes are pretty stinky.

Name: Anonymous 2014-12-11 21:25

>>430
Look at this thief trying to profit from other people's work without putting in any of her own.

Do you know what we do to thieves in my country?

Name: Anonymous 2014-12-11 21:27

>>431
Call them by feminine pronouns? Oo, so painful.
Or maybe you make them your presidents like you did with Nixon? "I am not a crook", haha.

Name: Anonymous 2014-12-11 23:11

>>431
her
CHECKEM!

Name: Anonymous 2014-12-11 23:32

>>432
He technically called you by a feminine possessive adjective. No pronoun.

>>433
Nice, bro xD

Name: Anonymous 2014-12-12 19:07

>>434
Sad that in English some pronouns are called "adjectives" for no reason. "Her" is the possessive form of "she" and thus is a pronoun. It serves the same purpose as all other pronouns (anaphora), as opposed to real possessive adjectives like "Jane's" or "Sussman's".

Name: Anonymous 2014-12-12 19:41

>>435
Debatable. "Hers" would be a real pronoun, as it actually takes the place of a noun. "Her" is an adjective merely because it modifies a noun.

"I have my shoes and hers as well" (pronoun)
"I have her shoes" (adjective)

As for "Sussman's" you're describing an inflection of a noun, which doesn't make it an adjective.

Name: Anonymous 2014-12-12 19:53

>>436
As for "her" you're describing an inflection of a pronoun, which doesn't make it an adjective.

Adjectives are definite, pronouns are anaphoric (i.e. refer to something dependent entirely on the context). "Green" or "Jane's" refer to greenness and Jane respectively in any context, while "her" refers to something that has as many meanings as there are possible contexts. Thus, "her" is a pronoun.

Name: Anonymous 2014-12-12 19:55

>>436
Furthermore, "her" couldn't be a pronoun because it could never act as the subject or object of the verb (which is the definition of a noun - and pronouns act as substituted nouns.)

One couldn't say "her is great" nor "I have her"; one would always say "hers is great and "I have hers." The adjective her could only work if followed by a noun.

The same thing could be said for my/mine, your/yours, our/ours, etc.

Name: Anonymous 2014-12-12 19:57

>>438
Then it's a proadjective. It acts as a substitution of an adjective but it's not an adjective.
But if "Sussman's" is a nout (an inflected form of a noun), then "her" is an inflected form of a pronoun.

Name: Anonymous 2014-12-12 20:14

>>439
Just because her is derived etymologically from a pronoun doesn't make it an inflected form of a pronoun. The inflected form of the pronoun "she" would be "hers." The adjective "her" is related to it, yes, but that doesn't make it a pronoun in itself. It's actually a determiner. Some determiners can serve as both adjectives and pronouns, like "this" and "that", but "her" cannot. It can only describe nouns and cannot stand in for a noun by itself. Maybe a proadjective is the better term for it.

"Sussman's" is a noun because it's the possessive form. Yes, it can describe other nouns, as in "Sussman's book", but it can also stand by itself, as in "I read that book, but Sussman's is better."

Now don't get me wrong, some adjectives can act as nouns, as in "red is my favorite color" or "hand me the reds" (in reference to cigarettes.) But possessive adjectives cannot do this.

Name: Anonymous 2014-12-12 20:24

>>440
"Her" is an inflection, it's merely the genitive and accusative form of "she". "She" is nominative, "her" is genitive. Cf. German "Sie"-"Seine", "Er" - "Sein".

Name: Anonymous 2014-12-12 20:31

OK, my German is pretty rusty. But that's beside the point. Look here:

http://en.wikipedia.org/wiki/French_pronouns
http://en.wikipedia.org/wiki/French_personal_pronouns
http://en.wikipedia.org/wiki/German_pronouns

In both languages the forms for case as well as for possession are still considered pronouns, or the inflected versions of them. English is shares a lot of its ancestry with French and German; it's lost most of inflection in nouns and adjectives, but kept inflection in pronouns. It's only logical to consider words "her", "him" and "his" inflections of pronouns in consistency with their purpose and role in cognate languages.

Name: Anonymous 2014-12-12 20:35

>>441
No, "her" is not genitive. "Hers" is the proper genitive. C.f. Latin's "tuus" and "tui" (nominative adjective, genitive of "tu" respectively.)

And yes, "her" is the objective form of "she", but that's a coincidence. Other possessive adjectives don't share the same form as their objective forms (like mine and me, ours and us)

Anyway, I'm not saying you're entirely wrong, just that this is debatable. A lot of linguists disagree with each other.

Name: TRIPPER 2014-12-12 22:31

444 GET

Name: Anonymous 2014-12-12 22:43

>>443
GENITALS! GENITALS! GENITALS! GENITALS!

Name: Anonymous 2014-12-12 22:46

>>442
ancestry
I'll flabbergast you, cunt!

Name: Anonymous 2014-12-12 22:47

>>444
444 Tripper

>>447
447 Skipper

come at me sis

Name: Skipper 2014-12-12 22:49

I'm landing dubs every day of the week. See if you can claim that, tripper. 4 dubs in a row!

Name: Skipper 2014-12-12 22:50

5 of dubs, GET

Name: Skipper 2014-12-12 22:52

>>444
5 dubs in a row

CHECK 'EM, BIATCH

Name: Anonymous 2014-12-13 6:17

>>442
French has a distinction between possessive adjectives and possessive pronouns just like English does, for instance, "mon, ma, mes" are adjectives, but "le mien" is a pronoun. This is the case with English. "My" is not a pronoun, it is an adjective. "Mine", however, is a pronoun.

For instance, "c'est mon frere" (this is my brother - adjective) but also "ce frere est le mien" (this brother is mine - pronoun.)

This whole argument could have been avoided if you simply checked wikipedia.

http://en.wikipedia.org/wiki/Possessive_determiner

Examples in English include possessive forms of the personal pronouns, namely my, your, his, her, its, our and their, but excluding the forms such as mine and ours that are used as possessive pronouns and not as determiners.

So yes, these examples are inflected forms of personal pronouns, but they do not act as pronouns, they act as determiners - thus they are adjectives. The true possessive pronouns are words like mine, hers, yours, etc.

Name: Anonymous 2014-12-13 9:03

>>451
Your post would be correct if you substituted "adjective" with "proadjective". "My" is not a full adjective because it's anaphoric. It's a proadjective.

Name: Anonymous 2014-12-13 9:20

>>452
Please elaborate on how it's anaphoric. I'm not saying you're wrong, I just don't see how it is.

And if it is anaphoric, why would that make it no longer be a determiner? (Determiner and adjective are commonly thrown around interchangeably, but let's stop that right now, since determiner is more specific.)

Name: Anonymous 2014-12-13 9:34

>>453
How is it not anaphoric? Please see Wikipedia which you so cherish:

http://en.wikipedia.org/wiki/Anaphora_%28linguistics%29

In linguistics, anaphora /əˈnæfərə/ is the use of an expression the interpretation of which depends upon another expression in context (its antecedent or postcedent). In the sentence Sally arrived, but nobody saw her, the pronoun her is anaphoric, referring back to Sally.

When you say "my house burned down", the house that "my" refers to is determined entirely by the context, i.e. by the person speaking, i.e. by you. Is someone else said "my house burned down", then it would be a different house (unless he used to share a house with you).

On the contrary, if you said "a green house burned down", then the meaning would be independent of context: the house would be just as green if someone else said the same thing (barring the rare possibility of color perception diseases).

Thus, the word "my" is anaphoric, and not an adjective any more than "I" is a noun. If pronouns are words that anaphorically stand for nouns, then the words that do the same for adjectives are simplest called proadjectives. No need to invent superfluous entities like "determiners" or inconsistent rules like "I is not a proper noun but its inflections are proper adjectives".

Name: Anonymous 2014-12-13 10:20

>>454
There is no need for the hostility in your opening line. I asked you a question politely. Yes, I know what anaphora is. My way of thinking was that something like "my house is brown" couldn't refer back to something that was previously mentioned if it was never mentioned to begin with. That is why I doubted it was anaphoric. I had not thought of your perspective, which is why I asked for it. Having considered it, I think you make a solid case for anaphora.

Furthermore, I didn't invent the term "determiner". Any foreign language student/linguist must learn their determiners: articles, numerals, demonstratives, quantifiers, etc. Many people consider possessive "adjectives" (or "proadjectives") to be determiners as well. I hope you realize that the term "proadjective" is used a lot less than "determiner" is.

Name: Anonymous 2014-12-13 12:14

>>455
Proadjectives are a subset of determiners, obviously.

Name: Anonymous 2014-12-13 13:14

>>455
That is why I doubted it was anaphoric. I had not thought of your perspective, which is why I asked for it.

Nice dubs bro xD

Name: Anonymous 2014-12-13 14:08

What about the GUI, Cudder?
I hope you call the windowing system directly. Or at least use OpenGL ES. All so called "toolkits" are bloated and disgusting.

Name: Anonymous 2014-12-13 14:11

>>456
No they're not. Proadjectives replace adjectives and govern the verb as a subject or object. They do not modify nouns.

Consider the following examples:

I am stoned. Much more so than I wanted to be.
My cat is white, but my dog is more so.

We can tell they're not determiners because determiners are allowed to take other adjectives, but proadjectives cannot, since they take the place of an adjective to begin with. (I can't even come up with an example of this - it's too ridiculous and nonsensical.)

"My" cannot stand on its own, nor can it replace adjectives. In all contexts, "my" replaces nouns, and it must be behind a noun when governing a verb... otherwise the pronoun "mine" is used.

Name: Anonymous 2014-12-13 14:13

>>458
Use the framebuffer of get the fuck out!

Name: Anonymous 2014-12-13 14:17

SVGALib is the way to go.

Name: Anonymous 2014-12-13 14:18

Just access I/O ports and PCI/VGA memory directly.
No bloat.

Name: Anonymous 2014-12-13 17:32

>>462
That's a good idea but I don't want to be forced to run my browser in kernelspace.

Name: Anonymous 2014-12-13 17:45

What is needed to draw a pixel through the web
1.) Parse some URI.
2.) Connect to the webserver.
3.) Send a state-less request adding pixel state through cookies.
4.) Retrieve the HTML.
5.) Parse the HTML.
6.) Do the same steps for all the dependencies.
7.) Parse CSS/Javascript/whatever.
8.) Run the required dependencies in your runtime and interact via the
big DOM model.
9.) Somewhen draw something for the user. Do premature optimisation by
outputting half-drawn layouts because dependencies haven’t been
downloaded yet.
10.) ...
11.) Be the main cause of global warming. (Not really.)

Name: Anonymous 2014-12-13 17:45

>>459
But proadjectives can take other adjectives:

her green pubic hair

"My" can replace adjectives:

What sort of fucking monster dog is this?
This is my dog, this is my boy

Proadjectives are considered determiners, source:

http://learnenglish.britishcouncil.org/en/english-grammar/determiners-and-quantifiers

The specific determiners are:
the definite article: the
possessives: my, your, his, her, its; our, their, whose

Name: Anonymous 2014-12-13 18:05

What about libhtml? Why not convert it?
https://code.google.com/p/plan9front/source/browse/sys/src#src%2Flibhtml

And Mothra or Abaco? Aren't they good enough?
Mothra was written by Tom Duff

Name: Anonymous 2014-12-13 18:08

Name: Anonymous 2014-12-13 23:01

>>465
You still think "my" and other possessives are proadjectives, when they are not, and your argument fails since it is based on this ground. Good job proving to me that "my" is a determiner: now prove that it's a proadjective.

A proadjective is "so" or "too" in the following sentences:

The dog is stoned and so is the cat. (Antecedent: stoned)
My cat is high and my dog is too. (Antecedent: high)
My penguin is blazed; but less so than me. (Antecedent: blazed)

Proadjectives substitute adjectives, and they function like substantive adjectives: they govern a verb as a subject or predicate. Determiners do not substitute adjectives. In the instances where a determiner is allowed to stand on its own (this, that, those) it substitutes a noun. Not all determiners can stand on their own, but all determiners must be able to modify a noun or adjective. "My" can only modify a noun, it can never substitute and refer backwards to an adjective, and it certainly can't stand on its own (which is what all pro-forms can do.)

So yes, you provided reasonable examples, except they are all examples of determiners and you thus proved my point.

Name: Anonymous 2014-12-14 0:02

haha you faggots are so stupid
fucking undergrads
my professor say's so!

Name: Anonymous 2014-12-14 0:10

>>469
Nice 69-GET, bro. I'd like to smoke weed with you, bro.

Name: Anonymous 2014-12-14 0:35

>>469
Your a dum fucken NIGGER!

Name: Anonymous 2014-12-14 1:20

420 BLAZE IT!

Name: Anonymous 2014-12-14 4:59

▄░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▄
░░___________________0__________________░░
░░__________________00__________________░░
░░_________________0000_________________░░
░░_____0__________000000___________0____░░
░░_____00_________000000___________0____░░
░░______0000______000000__________00____░░
░░______000000____0000000_____00000_____░░
░░___0_____0000000_000000_00000000___0__░░
░░__00______000000_00000_0000000____00__░░
░░__0000_____000000_000_000000____0000__░░
░░___000000000__0000_0_000_0_000000000__░░
░░______000000000__0_0_0_00000000000____░░
░░__________000000000000000000000_______░░
░░________________000_0_0000____________░░
░░______________00000_0__00000__________░░
░░____________00_______0_______00_______░░
░░_____________________0________________░░
░░░░░░░░░░░░░░░░.░░░░░░░░░░░░░░░░░
░░░░░░░░░.▄██░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░.▄███░░▄███▄░░░▄▄▄▄░░░░░░░
░░░░░░░.██▀██░░██▀██░░██▀▀██░░░░░░
░░░░░.▄██▄▄██▄░░▄██▀░░██░░██░░░░░░
░░░░░░░░░░.██░░███▄▄░░██▄▄██░░░░░░
░░░░░░░░░.▄██▄░░░░░░░░░▀▀▀▀░░░░░░░
░░░░░░░░░░░░░░░░.░░░░░░░░░░░░░░░░░

Name: Anonymous 2014-12-14 5:04

────────────────▒▒────────────
───────────────░░▒─░▒▒────────
──────────────░▒───░░░░───────
──────────────░▒──────░▒──────
──────────────░░░▒▒──░░▒──────
────────────────░░░──░░░░░▒▒──
──────────────────░────────░░─
──────────────────░░░░░░░░▒─░░
──────────────────────────░▒─░
──────────────────────────░░─░
█████████████████████████▒─▒─▒
█████████████████████████▒─▒─▒

Name: Anonymous 2014-12-14 11:45

.....................,-'´ . . . _,,,,,';:-,...................
....................,-(c\ \`;-=´,_,-~-, \`...............
..................,/ . . .¯'\, º ,/.'-~°,' .¯`'-,...........
................../ . . . . . .¯,_ ~--~',, . . .'\..........
.................| . . . . . . . . ¯¨¨¨(̅_̅_̅_̅((_̅_̲̅¬¬¬¬¬¬¬м̲̅¬¬¬a̲¬̅я̲̅i̲̅j̲̅u̲̅a̲̅n¬̲¬¬̅¬a¬̲¬̅¬̅¬_̅_¬̅¬_¬̅() ڪے
.................| . . . . . . . , . . . .`'-, . . . |..........
................/\ . . . . . . ."-,,,-'~-~' . . . '|..........
.............,/'`\,`'-, . . . . . . . . . . . . . . /\..........
░█▀▄░█░█░█▀█░░█▀▀░▀█▀░█▀▀░█▀█░
░█░█░█░█░█▀▀█░▀▀█░░█░░█▀▀░█▀▀░
░▀▀░░▀▀▀░▀▀▀▀░▀▀▀░░▀░░▀▀▀░▀░░░

Name: Cudder !MhMRSATORI 2014-12-14 12:41

>>429
Give me some time to clean it up first...

>>458
Yes, native Win32.

>>466
https://code.google.com/p/plan9front/source/browse/sys/src/libhtml/lex.c#594
- Nearly 1.5K lines of C (my tokeniser is <1K lines of x86 Asm)
- Allocates (and presumably frees somewhere else...) every single token - how in $deity's name can anyone think this is necessary?
- Tons of reallocs (not even exponentially growing the buffer, only linear, so quadratic time overall!) I showed how bad this could be in >>131,133
- Doesn't look compliant with HTML5

Then I look at
https://code.google.com/p/plan9front/source/browse/sys/src/libhtml/build.c
and the first thing I see is a fixed-size array for an element stack, one thing that certainly deserves to be dynamically allocated/resizeable?

This one may be "simpler" than something like Gecko or WebKit, but seeing these elementary mistakes in presumably more "efficient" and "less bloated" software (these Plan9 guys should know more than me...?) is still a big... FAIL!

Name: Anonymous 2014-12-14 15:27

>>476
Yes, native Win32.
What about Linux? And BSD?
No support for us?

Name: Anonymous 2014-12-14 15:29

>>476

What about http://plan9.stanleylieber.com/src/html.tgz ?
It is smaller and written by someone else.

Name: Anonymous 2014-12-14 15:31

>>476
Do you know FASM? I think you'd like it more than x86 Asm

Name: Anonymous 2014-12-14 20:03

>>476
some people value portability more than ur premature optimisation shiet

Name: Anonymous 2014-12-14 22:18

>>476
Let me clean up my anus first...

>>477
Aww, look at the cute groski with big sad puppy eyes.

Name: Cudder !MhMRSATORI 2014-12-15 14:48

>>477
There's too much fragmentation and bloaty stuff in the *nix world for UIs, you can just use WINE instead.

>>478
I can't see anything wrong with it from a quick glance, but that's not to say it's bad or good --- just that I don't really have the time at the moment to understand it. However, from how it closes tags, it's probably not HTML5-compliant.

>>479
Do you know British English? I think you'd like it more than English.

>>480
Idiotic use of memory has nothing to do with "portability".

Name: Anonymous 2014-12-15 14:54

>>482
Do you know British English? I think you'd like it more than English.
British English is the only true English. American English is like a heresy.
English by definition is the same as British English.

Name: Anonymous 2014-12-15 15:17

Check my palindrome GET.

Name: Anonymous 2014-12-15 15:19

This anti-american shit is a 4chan meme by the way.
britniggers think s is z what fucking retards and then z being ``zed'' da fuck

Name: Anonymous 2014-12-15 15:27

Yeah, fuck ``zed''

If you're going to insist on using a bastardized name of a Greek letter, why not call a ``Alph'' and b ``bed''?

At least ``zee'' is analogous to other letters like ``bee'' and ``dee''

Name: Anonymous 2014-12-15 15:47

a bee cee dee e f gee h i j k l m n o p q r s tee u vee w x y zee

Name: Anonymous 2014-12-15 15:54

>>487
Very interesting post, guy!

Name: Anonymous 2014-12-15 16:07

>>482
There's too much fragmentation and bloaty stuff in the *nix world for UIs, you can just use WINE instead.

Just use OpenGL ES. Everything supports it and it isn't that bloated, I believe. Will the non-UI stuff be cross-platform at least, so we can build a GUI for Linux based on it?

Name: Anonymous 2014-12-15 16:08

alf bed cam dild eebit diggem jam head yod jot cap lamb moo gnu onker pea cup row seam tow ulf wolf wub oobit zed

Name: Anonymous 2014-12-15 16:19

>>488
'll be honest, i'm addicted to anal sex with girls and all kind of anal games especially to huge massive gaped assholes hmmmmm!! I also like fucking girls (or womens) ass with huge toys, ass to mouth, double ass-fucking, ass-fisting, prolapse..... . And i'm not ashame for admit it because i love it to much! I also like to fuck with whores especially when they love it in the ass.
So girls and womens... if you wanna know more about me or my anal-interests, don't be shy just ask for it i will answer you with pleasure!!

And i also have ya_hoo for some horny naughty (anal)chat

Name: Anonymous 2014-12-15 16:32

Name: Anonymous 2014-12-15 17:47

Y'all niggas need ta shut the fuck up!

Name: Anonymous 2014-12-16 22:25

Hey Cudder, I'm on Linux and I really wanted to use your browser, will you really not develop a GUI for it? You can call X11 directly, if that's such a concern. Or use OpenGL as one person said.
Pretty please.

Name: Anonymous 2014-12-16 22:56

Palindrome GET

Name: Anonymous 2014-12-17 0:32

I stole the following code and it tells me >>495 is a LIAR. He didn't get a palindrome as he claims!

module Main

import Decidable.Equality

%default total

data U : List a -> Type where
nil : U (List.Nil {a})
one : (x : a) -> U [x]
two : (x : a) -> (u : U xs) -> (y : a)
-> U (x :: xs ++ [y])

index : (n : Nat) -> Vect k a -> Vect k a -> List a
index Z xs ys = []
index (S Z) (x :: xs) (y :: ys) = [x]
index (S (S n)) (x :: xs) (y :: ys) = x :: index n xs ys ++ [y]
index (S n) [] [] = []

build : (n : Nat) -> (xs : Vect k a) -> (ys : Vect k a) -> U (index n xs ys)
build Z xs ys = nil
build (S Z) (x :: xs) (y :: ys) = one x
build (S (S n)) (x :: xs) (y :: ys) = two x (build n xs ys) y
build (S n) [] [] = nil

postulate eq : (xs : List a) -> index (length xs) (fromList xs) (reverse $ fromList xs) = xs

toU : (xs : List a) -> U xs
toU xs = replace (eq xs) $ build (length xs) (fromList xs) (reverse $ fromList xs)

data Palindrome : List a -> Type where
p0 : Palindrome (List.Nil {a})
p1 : (x : a) -> Palindrome [x]
p2 : (x : a) -> (u : Palindrome xs) -> Palindrome (x :: xs ++ [x])

isPalinU : DecEq a => {xs : List a} -> U xs -> Maybe (Palindrome xs)
isPalinU nil = Just $ p0
isPalinU (one x) = Just $ p1 x
isPalinU (two x u y) with (decEq x y)
isPalinU (two x u x) | Yes Refl = p2 x `map` isPalinU u
isPalinU (two x u y) | No neq = Nothing

isPalindrome : DecEq a => (xs : List a) -> Maybe (Palindrome xs)
isPalindrome xs = isPalinU $ toU xs

partial
main : IO ()
main = do
input <- unpack . trim `map` getLine
putStrLn $ case isPalindrome input of
Just p => "yes"
Nothing => "no"

Name: Anonymous 2014-12-17 0:48

SGML >>>>>>>>>>>>>JewSON>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> S-EXPS

Name: Cudder !MhMRSATORI 2014-12-17 14:49

>>489
I don't care about "cross-platform", really. If you want to do it right, you have to write something slightly different for each platform anyway.

>>494
Just use WINE. I'll consider writing something using libxt/xaw after the Win32 version is working...

>>496
Palin is failin'

Name: Anonymous 2014-12-17 14:54

>>498
I'll consider writing something using libxt/xaw after the Win32 version is working...
Thanks a lot Mister Cudder, I'll be anxiously waiting for it.

Name: Anonymous 2014-12-17 15:34

JACKSON 500 GET

Name: ARKANSAW YEEHAW 2014-12-17 15:53

AR REPREZENT

Name: Anonymous 2014-12-17 21:36

>>498
Just use WINE
OK, this finally and unequivocally proves you're a troll. Advocating ultraminimalism and ASM and mentioning this atrocious bloatware at the same time?

Name: Anonymous 2014-12-17 22:03

>>502
This is /prog/, everyone is a troll.

Name: Anonymous 2014-12-17 22:03

>>503
Well, I'm not.

Name: Anonymous 2014-12-17 22:12

>>504
lol, yer trying to troll me with that

Name: Anonymous 2014-12-17 23:00

>>502
Cudder would probably prefer you just use windows.

Name: Anonymous 2014-12-17 23:00

>>506
Cudder would probably prefer you just use windows.
OK.

Name: Anonymous 2014-12-19 10:28

Cudder, how would you feel about hosting the browser (when ready) on KolibriOS's repository and, later on, working on a port for it? I'm almost sure they would like this idea too.

Name: Anonymous 2014-12-19 12:25

MenuetOS has an 64bit assembly written broswer:

There are screenshots also:
http://www.menuetos.net

Name: Anonymous 2014-12-19 12:30

You could email to MenuetOS, since they have also the html decoder done, fully in assembly.

Name: Anonymous 2014-12-19 13:49

The KolibriOS have shown interest on writing a lightweight browser in assembly before. Maybe they'd be interested in helping.

Name: Anonymous 2014-12-19 13:58

>>511
I checked your dubs and have deduced that they are sweet, bro xD

Name: Anonymous 2014-12-19 14:25

YOU KNOW A PROBLEM I REALLY HATE THAT I HAVE WITH MY BROWSER, CUDDER?

WHEN I TYPE "www.bbs.progrider.org/prog" IN MY URL BAR IT TELLS ME THE PAGE IS NOT FOUND! I HAVE TO GO THROUGH ALL THE TROUBLE TYPING "bbs.progrider.org/prog" TO GET THIS PAGE TO LOAD!

YOU SHOULD FIX THIS GLITCH IN YOUR NEW BROWSER, CUDDER, IT IS SOMTHING THAT US POOR CATS WHO CANT GET A BREAK FROM THE TAXES AND THE INS AND OUTS OF DAY TO DAY LIFE SIMPLY CANNOT STAND!

Name: Anonymous 2014-12-19 19:25

unsigned int hash(const char *s){ return strcmp(s, "hash"); }

Name: Anonymous 2014-12-22 17:17

Cudder is a troll, he will never deliver anything.

But this might be a good start for someone interested in the project.

http://mermaja.act.uji.es/docencia/is37/data/MenuetOS32/apps_dev/HTTPC.ASM

Name: Anonymous 2014-12-29 11:26

The following solution already exist:

- Hubbub: HTML5 compliant parsing library
- LibCSS: CSS parser and selection engine
- LibDOM: implementation of the W3C DOM
- Libnsbmp: decoding library for BMP and ICO image file formats
- Libnsgif: decoding library for the GIF image file format

That's all in C and supposedly lightweight. All from the NetSurf browser. http://www.netsurf-browser.org/projects/

Just start from there, cleaning those stuff up and adding everything else that's needed (especially javascript and an intuitive and minimal GUI).
No need for Assembly.

Name: Anonymous 2014-12-29 12:46

Name: Anonymous 2014-12-29 13:05

Let's write a piece of software that takes huge complex input from untrusted sources.
ok

Let's do it in C!
*sigh*

I'm the only one who prefers slightly slower massively safer programs?

Name: Anonymous 2014-12-29 13:18

>>517
Remove the Tcl GUI in favour of OpenGL, add HTML5 support and firtehr the ECMAScript support and you'll get yourself the perfect web browser.

Name: Anonymous 2014-12-29 14:18

>>518
What does the language has to do with the safety of the programs? Except if you are using agda or something.

Name: Anonymous 2014-12-29 16:11

>>518
Keep going. Recommend an alternative. You know, an alternative that has never had a vulnerability in the history of its development.

Name: Anonymous 2014-12-29 16:29

>>518
WebKit (Chrome mostly, Opera and a lot of third party browsers) is about 50% C/C++ and ~30% JS

Gecko (Firefox) is ~65% C/C++ and ~25% JS

Now take a guess which parts of these engines are written in C/C++

Name: Anonymous 2014-12-29 18:00

>>522
There is no such thing named C/C++. I think you mean C++.

Name: Anonymous 2014-12-29 22:27

>>520
Is this a serious question? Are you retarded?

Name: Anonymous 2014-12-29 22:36

>>524
Yes, it is a serious question.

Name: Anonymous 2014-12-30 11:18

>>512
Just because there's no language that has never had a vulnerability in programs written in it, doesn't mean it's easier to write insecure code in some languages (C, PHP, Ruby, ...) than it is in others (Scheme, Java, Go).

In general, managed memory is more secure than unmanaged memory (otherwise why not just ring0 everything? So Fast!!). Of course it doesn't matter in the hands of a True Master but you and I both know we're not True Masters. See: every buffer overflow since the beginning of time.

In general, strongly typed languages are more secure than weakly typed languages. That's a string you say? Sure, but it might also be an array. See: http://blog.sucuri.net/2014/10/drupal-sql-injection-attempts-in-the-wild.html

In general, more magic means more ways things can go wrong. The more a language tried to do behind your back, the easier it is for things to slip by unnoticed. See: http://www.sitepoint.com/anatomy-of-an-exploit-an-in-depth-look-at-the-rails-yaml-vulnerability/

So really what we're looking for is a boring, strongly-typed language with managed memory. Vulnerabilities will still happen, but with less regularity.

Name: Anonymous 2014-12-30 11:32

>>526
managed
No thanks. It's 2015. There's no excuse for using a type system that can't express resource relationships, particularly memory safety.

Name: Anonymous 2014-12-30 12:45

>>526
Use C with static checking tools and managed memory.
Also try this https://staff.aist.go.jp/y.oiwa/FailSafeC/index-en.html

Name: Anonymous 2014-12-30 13:06

What is wrong with NetSurf? Just contribute to it.

Name: Anonymous 2014-12-30 13:54

>>529
Cudder has posted in this very thread what's wrong with netsurf.

Name: Anonymous 2014-12-30 14:07

>>530
The only time Cudder talked about netsurf was on >>110 but it was indirectly (servo takes netsurf as basis sometime).

I can't see why not use NetSurf.

Name: Anonymous 2014-12-30 14:11

>>530
Cudder is a troll who never delivered anything (and won't deliver his "browser" either).

Name: Anonymous 2014-12-30 18:31

>>526
SQL injection is a terrible example to bring up. If can be fixed with a library that escapes all strings. Don't allow the programmer to provide their own strings. Problem solved at the expense of efficiency and convenience.

otherwise why not just ring0 everything?
Some programs are malicious. If all programs shared memory, an unprivileged program could intentionally interfere with the memory of programs running under more privilege. Not every memory error is a bug.

Of course it doesn't matter in the hands of a True Master but you and I both know we're not True Masters.
Maybe not. But managed memory is not the only solution, and is not an adequate solution. There are still vulnerabilities in the support libraries. See java. See flash. Which is safer, running a 5K line C program or a 4K line java program that uses 100K lines of C/C++ in the standard libraries? Keep in mind these libraries are standard and studied by every hacker that targets java.

more magic means more ways things can go wrong. The more a language tried to do behind your back, the easier it is for things to slip by unnoticed.
There is the other side of the spectrum, where a language requires you to write so much the actual logic of what is happening is obscured.

Name: Anonymous 2014-12-30 19:36

>>533
Some programs are malicious
Use only trustworthy, open source programs then.

Name: Anonymous 2014-12-31 13:31

>>534
In a multiuser operating system, one user can attempt to attack other users or escalate their own privilege.

Name: Anonymous 2015-01-01 1:17

>>532
yeah, I know, and he doesn't give a shit about anything other than tiny optimisations. some value correctness, code simplicity, portability, etc. cudder only cares about how fast and how little space his shitty programs use.

what a fucking weeaboo

Name: Cudder !MhMRSATORI 2015-01-01 6:41

>>518
You and the rest of the user-oppressing DRM-advocating gang. Who do jailbreaks exist? Insecurity is freedom. Keep this in mind: "Those who give up freedom for security deserve neither."

>>535
We're talking about personal computers here, not SOA cloud crap. There should only ever be one user for a PC, and (s)he completely owns the hardware and software. All of it.

On the topic of "sufficiently smart compilers"...
(1) The equivalent of "goto fail;"?
mov [ebx+24], eax
mov [ebx+24], eax

(2) Wasting another instruction, a register (ebx is not used again in this function), and a memory access.
call 4706996
add esp, 12
mov ebx, eax
mov [ebp-28], ebx
... {neither ebx, eax, nor [ebp-28] are used after this} ...

There is absolutely no way a human programmer would write such idiotic code, unless he was drunk or doing stupid copy-pasting. I've been staring at compiler-generated shit for almost 8 hours a day for the last decade or so and I can tell you that COMPILERS ARE NOT SMART.

>>536
Simple code also tends to be small, fast, and correct. Portability is stupid "lowest-common-denominator" idiocy. (Just look at Java... it runs everywhere, but not great anywhere.)

Name: Anonymous 2015-01-01 15:26

>>537
I don't like the use of that quote in this context, because you gain no security from DRM and locked down machines. Only vulnerabilities.

Name: Cudder !MhMRSATORI 2015-01-01 15:35

>>538
It's perceived security. The way they market it just makes people think "this is so safe and secure!" It's called a "jailbreak" for a reason - a high-security prison is one of the most "secure" places to live in. No sane person would voluntarily go live in one, yet that's what people are doing to themselves with computers.

Name: Anonymous 2015-01-02 5:21

>>537
So if you want your kawaii 4chan-esque :^) browser to support ARM, do you compile x86 asm to ARM asm?

Name: Anonymous 2015-01-02 6:25

>>540
ARM
Come on, be serious.

Name: Anonymous 2015-01-02 9:09

nothing says simplicity more than windows and x86

Name: Cudder !MhMRSATORI 2015-01-02 10:20

>>540
If/when there is a need, I'll just write an ARM version.

Name: Anonymous 2015-01-03 1:53

>>543
Why don't you contribute to NetSurf instead of trying to create a new web browser (a Cudder™ project that will eventually result in failure)? I'm starting to believe you really are a troll.

Name: Anonymous 2015-01-03 2:42

>>544
Because it is not his job to please you, and he can work on any project that he likes, whenever he likes, however he likes.

Why aren't you contributing to NetSurf?

Name: Anonymous 2015-01-03 2:51

>>544
Man, I don't care how much of a pathetic masochist cudder is. I can make computers do whatever I want. lmao

Name: Anonymous 2015-01-03 3:18

Man, I don't care how much of a pathetic masochist 546 is. I can make software do whatever I want. rofl-la-mo

Name: Anonymous 2015-01-03 3:57

>>544
Nice dubs xD

Name: Cudder !MhMRSATORI 2015-01-03 13:02

>>544
For mostly the same reason I'm not going to submit code to Firefox, WebKit, etc. - Because I'd have to rewrite (or remove...) most of it anyway.

>>531
>>516
Hubbub is NetSurf's parser, and I've already mentioned it in >>110. In detail, here's what's wrong with it (refer to https://github.com/servo/libhubbub/blob/master/src/tokeniser/tokeniser.c as of the time of this post):

- Using switch statement and explicit case numbers to implement the tokeniser FSM instead of simple gotos and implicit position-based FSM. This means it has to go through that switch every time through the main loop, even if the next state is the same, instead of just jumping to the right place.

- Making every damn state a function. The amount of work that has to be done in each state is tiny, but somehow they've managed to bloat them big enough to look like each one of those functions is nontrivial. There is a ton of duplicate code as a result - for example, compare hubbub_tokeniser_handle_attribute_value_dq(), hubbub_tokeniser_handle_attribute_value_sq(), and hubbub_tokeniser_handle_attribute_value_uq(). (The names are ridiculously long too.) Each one is over 40 lines and performs basically the same thing... can you spot the differences between them?

Here's the corresponding part of my parser's tokeniser; it handles all 3 types of attribute values.
attrv_unquoted_loop:
cmp al, '>'
jz finish_attr_done
call [ebp+htmlp.func_iswhs]
jnz attrv_loop
finish_attr_done:
; omitted code here finishes an attribute and emits a tag or starts a new one (~10 lines)
...
find_attrv:
xor bl, bl ; presume unquoted
; omitted code here scans for start of an attribute value (<10 lines)
...
cmp al, '"'
jz attrv_quoted
cmp al, "'"
jnz attrv_unquoted
attrv_quoted:
mov bl, al ; save quote char
inc edx ; skip quote char
attrv_loop:
call [ebp+htmlp.func_getchar] ; EOF - ignore
attrv_unquoted:
or bl, bl
jz attrv_unquoted_loop
cmp al, bl
jnz attrv_loop
jmp finish_attr_done

I've shown quite a bit more than the actual unquoted/quoted attribute value states, just so you can follow the structure around it, and yet this code in x86 Asm is still shorter than one of Hubbub's functions, in C, that does a tiny fraction of the real work this does! The actual quoted/unquoted attribute value states are represented by these ten instructions:
attrv_unquoted_loop:
cmp al, '>'
jz finish_attr_done
call [ebp+htmlp.func_iswhs]
jnz attrv_loop
...
attrv_loop:
call [ebp+htmlp.func_getchar] ; EOF - ignore
attrv_unquoted:
or bl, bl
jz attrv_unquoted_loop
cmp al, bl
jnz attrv_loop
jmp finish_attr_done

I'm not claiming to be an expert on HTML parsing by any means, but this code is so short because what it does really is that simple - unquoted attributes are terminated by > or whitespace, and quoted ones are terminated by their quote character. There's nothing at all deep or complex about this, yet Hubbub's version makes it look like even "lightweight" code (which they claim to be) needs to do all that shit so it gets used as "evidence" by all the people claiming "browsers need to be complex!"

- Character references don't need to be handled by the tokeniser, since the presence or absence of any '&'s doesn't affect tokenisation. There's another chunk of complexity that could be factored out. I mentioned this in >>110 already. As expected, Hubbub takes the stupid route.

- DOCTYPE tokens, same thing, already mentioned above.

- EOF - this is another bloater. Hubbub checks for EOF in the code of every state(!), but if you read the spec you'll see that the number of operations upon EOF are limited to two: not doing anything or "emit the current token", so my EOF handling is done in getchar. The cases that don't do anything don't need any code, the ones that do are recorded in an array (there's only 16 entries) and the right place is jumped to when the EOF function is called.

- Partial input handling: this is all handled in getchar - which returns "up two levels" to whatever called the parser when it runs out of input (try doing that in C!) The input is one big buffer which gets resized and moved as needed. I'm not sure what Hubbub does here, but it's probably more complex than this.

- Output interface: Hubbub stuffs everything into a "token" structure and then calls one function, token_handler(), to push the results out. It has functions named emit_current_tag(), emit_current_comment(), emit_current_chars(), etc., but all those have to go through that one token_handler() function. On the other side, the tree construction has to then switch on that type, just to call the right function, when they could've made the tokeniser call those different functions in the first place. How stupid is that? It's [i]bloody-panties-on-head retarded!![/code] I take the sane route with my tokeniser interface:

extrn @emit_doctype@4:near
extrn @emit_text@4:near
extrn @emit_comment@4:near
extrn @emit_tag@4:near


One function for each token type, as it should be. No need for a "token type" either, because the function being called implicitly determines what token was emitted, and it can directly read from the right fields of the parser/tokeniser structure to get its info. The pointer to the parser structure is in a register already. Simple and efficient. Tree construction is currently in C so I have to fight with stupid HLL calling conventions bullshit (I use ecx for a loop counter - the way it should be used - and ebp for the parser structure, but __fastcall wants to put the first parameter in ecx!!) but I expect that'll change once I rewrite that part in Asm too.

tl;dr: I'm not going to touch NetSurf, because it wouldn't be NetSurf anymore if I did.

Name: Anonymous 2015-01-03 14:36

>>549
See if you can fit a tokenizer into the symbol space used by hubub's.

Name: Cudder !MhMRSATORI 2015-01-03 14:48

P.S. anyone else who wants to try "fixing" the parser and/or telling NetSurf devs about this, go ahead, but I doubt they'll listen...

Apparently this new HTML5 parser was the result of GSoC - where n00bs are paid to churn out as much shit code as they can in a limited timeframe. No wonder it's full of amateur mistakes.

Name: Cudder !MhMRSATORI 2015-01-03 15:50

>>550
Explain.

Name: Anonymous 2015-01-03 19:16

>>552
Well all those long function names must be using up a lot of space in the symbol table when compiled to object code. You could probably fit a small tokenizer in there.

Name: Anonymous 2015-01-04 0:20

>>549
duhh hdey shud use utf8-le yall

Name: Anonymous 2015-01-04 12:23

Cudder, do you have any idea when your code-cleanup will be ready? A rough estimative?
I'm really excited to go through it and maybe even try a Linux port on my free-time.
I feel disgusted every single day using these other bloated browsers.

Name: Cudder !MhMRSATORI 2015-01-04 15:11

>>553
Function names are not really a runtime concern, since the tokeniser is not something you would be dynamically linking anyway. They just make the source code really annoying to read. But seeing as my tokeniser is ~1KB, I'm pretty sure it's smaller than all the function names combined; for comparison, my post in >>549 is over 5KB already.

>>555
No idea (and work is starting back up so probably not all that much time for the coming month or two...) Remember that this is just a parser and DOM viewer, not anywhere near a full browser yet. >>123 is around what it's like at the moment. It's still in need of a CSS parser/renderer.

Name: Anonymous 2015-01-18 13:01

>>110
Servo hasn't used libhubbub for a number of months; they use https://github.com/servo/html5ever/ now instead.

Name: Cudder !MhMRSATORI 2015-01-18 14:44

>>557
Although I don't know Rust that looks much better at first glance... but the trend of splitting everything into a bunch of relatively tiny files is still a bit irritating. There's still some duplication especially in the attribute quote handling, leaving in "parse error" cases is useless for something intended for a browser, character references are being done inline, and it's a pretty dumb literal translation of the standard, but this is definitely better than the mess of Hubbub.

However, I haven't looked at the binary resulting from this so can't compare directly...

Name: Cudder !MhMRSATORI 2015-01-19 12:18

Time to look at CSS3 syntax more closely...

http://www.w3.org/TR/css-syntax-3/

It's around as verbose as the HTML5 syntax spec if not more, but somehow also less informative and quite hard to follow. The selector syntax is in a different spec. There are 32 token types, if I counted correctly... and the spec isn't in the form of a state machine.

Does anyone find it funny that the CSS parser may end up being larger than the HTML one...?

Name: Anonymous 2015-01-19 12:32

How about CSS 2?

Name: Anonymous 2015-01-19 13:31

>>559
Does anyone find it funny that the CSS parser may end up being larger than the HTML one...?

No, I find it said.

Name: Cudder !MhMRSATORI 2015-01-19 15:27

>>560,561
No detailed syntax spec for CSS2.1 at all; it's just a lex/yacc (more like yucck) grammar and some descriptive prose:

http://www.w3.org/TR/CSS21/grammar.html

I might end up combining/simplifying what I can from the two specs and end up with something CSS2.5-ish.

Name: Anonymous 2015-01-19 22:53

>>559
No it's not. HTML is a matter of document markup. CSS is about the visual elements of the HTML document. It makes sense to me that your CSS parser is larger because it will need to deal with a larger set of possible inputs.

Name: Anonymous 2015-01-19 23:58

>>563
it will need to deal with a larger set of possible inputs.
Both are countably infinite. What's you're point?

Name: Anonymous 2015-01-20 1:18

>>564
That's not what I meant by possible inputs. This is what I meant. http://www.w3.org/TR/CSS/

Name: Anonymous 2015-01-20 1:35

lol man stop stroking cudder's fucking ego we all know "why browsers are bloated" is like a fucking fairy tale on tihs shitty board, no1 gives a fuck

Name: Anonymous 2015-01-20 10:10

>>566
Fairy tales can be very real when you have 2Gb of ram

Name: Anonymous 2015-01-20 10:10

>>566
Fairy tales can be very real when you have 2Gb of ram

Name: Anonymous 2015-01-20 10:18

Why in god's name does anyone write sepples,just WHY

Name: Anonymous 2015-01-20 10:43

>>569
It's much easier to write generic code and do heavy code composition in C++ than in C.

Name: Anonymous 2015-01-20 17:14

>>570
Well C is useless shit, so what? Why choose a pain-in-the-ass BDSM shit then?

Name: Anonymous 2015-01-21 1:07

>>570
generic code
Shitty version of macros. Use a Lisp (or roll your own, you dumb nigger) if you want to do wizard like things with your code.

heavy code composition
wat? googled that and got some bullshit about OOP. fuckin normalfag

Name: Anonymous 2015-01-21 3:06

>>570
I wouldn't argue that the latter is of actual benefit to anyone. Deep composition isn't abstraction, it's obfuscation, and any language that actively encourages it is creating more problems than it sets out to solve.

Name: Anonymous 2015-01-22 14:01

“newnewnewcss”, the port of Servo to the recently refactored rust-cssparser, has landed: https://github.com/servo/servo/pull/4689

Please let me know if you find any regression.

If you’re writing or modifying CSS parsing code in Servo (e.g. adding a new CSS property), you should be aware of and follow the conventions documented here:

http://servo.github.io/rust-cssparser/cssparser/index.html

Previously, parsing was based on "component values" that were either tokens, or blocks/function that contained a vector of more component values, forming a tree. Parsing functions would take a `&ComponentValue` or `&[ComponentValue]` parameter as their input.

Now the input is represented by a `&mut Parser` that tracks its own position within the input and yields tokens. When encountering a function token on block-opening token, you can get another `Parser` object for the arguments/contents. Otherwise the block is just skipped. Alternatives can be expressed by saving and restoring the internal state of the parser. (This is cheap, just copying 16 bytes. However some tokenization work may be duplicated.) Everything relies heavily on `Result<_, ()>` types and the `try!` macro (which returns early on `Err`) to make the code easier to read and maintain. (For what it’s worth, the diff stat is +1,949/-2,319 lines.)

Finally, string components of tokens now use the `CowString` type to borrow from the input when possible and avoid many allocations and lots of copying.

Name: Anonymous 2015-01-22 14:27

>>574
Wow that is an impressive design change. Ok, it sounds like the old design was pretty crap. But the new design is good.

Name: Anonymous 2015-01-24 1:54

>>576
Terrible!

Name: Anonymous 2015-01-25 1:59

What about links' engine, Cudder?
http://links.twibright.com/download/links-2.9.tar.gz

Name: Anonymous 2015-01-25 2:52

>>573
Code composition and generic programming (in C++ and Java) have benefited me over the years. In the industries that I've worked in (I've been working for 18 years now), I've noted various patterns in data structures and algorithms for the class of business operations that I've experienced. One of the reasons that I'm effective at delivering my work is because I reuse and repurpose the same old generic modules I've already written in the past (for the code that's copyrighted to me). I don't know why you consider abstraction as obfuscation because I always deliver a comprehensive set of software system models that model the different parts of the system. Everybody with half a brain can look at my models and comprehend how my system works.

Name: Anonymous 2015-01-25 3:28

>>578
Spare us the elevator speech about your
SCALABLE TURNKEY ENTERPRISE SOLUTIONS
please.

Design attributes that are unique to C++ are not good, and good design attributes are not unique to C++. You can compose abstract data structures in C too, if you really need it. The fact that you don't usually need it is not an indictment.

Name: Anonymous 2015-01-25 9:31

>>579
I would just gently remind you that any language without generics is useless.
C is a language without generics.

Name: Anonymous 2015-01-25 9:33

>>580
I wonder how we coped before Bjarne came along and saved the world.

Name: Anonymous 2015-01-25 9:44

>>580
It is with generics now, if your compiler supports _Generic
thats how how i implemented type-agnostic,variadic fprintf in a single macro(p(...))

Name: Anonymous 2015-01-25 9:48

>>581
Generic programming was pioneered by Ada, not by this retard.

Name: Anonymous 2015-01-25 9:53

>>583
Yes, exactly. I was mocking >>578 who was dick-waving about
generic programming (in C++ and Java)

Name: Anonymous 2015-01-25 11:14

>>581
Stepanov added templates and STL to Sepples, not Bjarne. Americans are not smart enough for those kinds of things. Even Ada was created by the French.

Name: Anonymous 2015-01-25 11:36

>>582
Wow, there's even a library based on it. Probably a pain to use, but it's still a commendable effort to make C at least a little useful.
http://sglib.sourceforge.net/

Name: Cudder !MhMRSATORI 2015-01-25 16:11

>>574
I don't know Rust so I can't examine this in detail, but...

When encountering a function token on block-opening token, you can get another `Parser` object for the arguments/contents.
I'm pretty sure you don't need to create another bloody object for that.

This is cheap, just copying 16 bytes. However some tokenization work may be duplicated.)
Tokenisation is almost certainly going to take far more time than "just copying 16 bytes" so duplicating work is definitely a BAD idea here.

Finally, string components of tokens now use the `CowString` type to borrow from the input when possible and avoid many allocations and lots of copying.
This is a good thing.

>>586
Looks like what OpenSSL does.

Name: Anonymous 2015-01-25 19:30

>>580-581
You can fake templating in the preprocessor if you really need it. It's ugly and I won't defend it except where it's absolutely necessary, but it is possible. The need to write generic code arises comparatively rarely in C (struct composition and private void pointers go a long way) so the situation isn't as dire as people coming from languages with generics in their standard libraries might think.

Name: >>3 2015-01-26 11:01

>>585
Stepanov added templates and STL to Sepples, not Bjarne. Americans are not smart enough for those kinds of things.
Are you insinuating that Bjarne is American?

Name: Anonymous 2015-04-06 1:50

IT'S BEEN A LONG TIME SINCE WE TALKED ABOUT THIS

*puts on bampu pantsu*

Name: Anonymous 2015-04-06 3:34

Name: Anonymous 2015-04-06 4:39

>>591
2001-04-26 14:57:30 PDT
How nice

Name: Anonymous 2015-04-06 4:54

>>591
IMHO, no aspect of the page should be left out of the developer's control.
There's only one sane response to that: FUCK YOU.

Name: Anonymous 2015-04-06 6:36

>>589
What, he isn't? He's definitely retarded enough to be an American.

1990: Named one of "America's twelve top young scientists" by Fortune Magazine.

Name: Anonymous 2015-04-06 22:44

>>591
Oh wow. The entitlement of some people astounds me.

I feel worse for having read all that. Imagine how Moz devs must feel.

Name: Cudder !cXCudderUE 2015-06-01 17:07

Time to look at CSS parsing/tokenising again in more detail...

http://dev.w3.org/csswg/css-syntax/#tokenization

What a mess... no reason I can see for "colon-token", "semicolon-token", and "comma-token", amongst others, to be separated out, when they could've just put them in with "delim-token". Ditto for "whitespace" since it get skipped over anyway - no sense in pushing that up to the parser. This needs to be transformed into a more usable set of states first.

Name: Anonymous 2015-06-01 17:31

>>596
Just admit you're never finishing your browser, so we can continue with the Cudder is all talk and no action epic meme instead of complaining about the W3C.

Name: del 2015-06-01 17:38

del

Name: Anonymous 2015-06-01 19:09

>>596
Nice job on polishing a turd, Cudder.

You fuckers should stop wasting so much energy on ``improving'' the HTML/CSS shit and create something half-reasonable instead.

Name: Anonymous 2015-06-02 1:17

>>599
We should at least have a reasonable implementation of the shitty standard so we can access services that use it with secure software.

Name: Cudder !cXCudderUE 2015-06-02 6:48

This state diagram is becoming rather hairy... but it looks like all that's really needed are identifiers, numbers, strings, and operators. That brings it more in line with the complexity of a C tokeniser, which isn't so bad, but looking at the spec you wouldn't think that.

>>600
This. >>599, if you'd only read the rest of the thread you'd realise that this is not about reinventing every bloody thing, but figuring out how to more efficiently make use of existing infrastructure. Systems don't exist in a void. No one will care about a new Web that almost no one can access.

Name: del 2015-06-02 19:58

del

Name: Anonymous 2015-06-02 20:30

>>601
We would still be making programs for Windows Me in Sepples if everyone had this retarded mentality of yours.

No one will care about a new Web that almost no one can access.
No one will care about a browser that almost no one uses.

Name: Anonymous 2015-06-02 22:28

>>603
It's still greater than the number of people that would use a browser for some newly made up protocol no one uses.

Name: Anonymous 2015-06-02 22:53

>>604
Yes, 1 is greater than 0.

Name: Anonymous 2015-06-03 5:33

>>603
Use my anus.

Name: Anonymous 2015-06-03 18:30

Name: Cudder !cXCudderUE 2015-06-04 14:50

>>603
And what's wrong with that? You're the retard here.

>>607
Reference counting is almost always just another way to say "I'm too stupid/busy/wasted to figure out when something should be freed"...

Name: Anonymous 2015-06-04 14:56

Honestly, I'd use Cudder's browser. But waiting for it is like waiting for Jesus to return.

Name: Anonymous 2015-06-04 15:09

+1

Name: Anonymous 2015-06-04 15:56

>>609
exactly

Name: del 2015-06-04 20:09

del

Name: Anonymous 2015-06-05 4:24

Honestly, I'd use Cudder's anus. But waiting for it is like waiting for Anonix to be written.

Name: Anonymous 2015-06-05 4:38

>>613
use my anus

Name: Anonymous 2015-06-05 5:36

This thread is too old. You can't reply anymore!

Name: Anonymous 2015-06-05 6:16

>>614
stalking, bullying, seemingly innocent microaggression...
how does it feel being such a shitlord?
srsly how do we fix the internet¿

Name: Anonymous 2015-06-05 11:25

>>616
srsly how do we fix the internet¿
By implementing net neutrality.

Name: del 2015-06-05 11:59

del

Name: Anonymous 2015-06-05 13:10

>>599
You fuckers should stop wasting so much energy on ``improving'' the HTML/CSS shit and create something half-reasonable instead.

Something reasonable would be gopher.
But you can't use it to access the web as we know it, so it's useless.

We should instead at least have a reasonable implementation of the shitty standard so we can access services that use it with secure software.

Unless Google starts marketing and pushing gopher as the new thing, we are lost with HTML/CSS/etc. And I would like to have a proper browser to access the world wide web: Cudder's browser.

Too bad it's all a wet dream, since we know Cudder won't deliver.

Name: sage 2015-06-05 13:37

sage

Name: del 2015-06-05 18:46

del

Name: Cudder !cXCudderUE 2015-06-06 4:50

You can whine all you want but I haven't seen anyone else in this thread claim to have written any significant parts of a browser either, nor thrown out some ideas... I already have most of an HTML parser done, and moved onto a CSS tokeniser now.

After that it will be CSS matching and the renderer, and then more UI stuff (settings, etc.) Then it may be ready to release.

It's a fun thing to see that when using Asm, you're not forced into the dogma that a program must be composed of functions (or objects). You can jump anywhere, and manipulate the stack to "call" or "return" to the appropriate place. With this the CSS parser becomes so much simpler, much like the HTML one did. The main state machine doesn't even need to check for and handle EOF explicitly - it's getchar() which does, and on EOF it jumps to the right handler based on the return address.

Fuck Dijkstra. He got it all wrong. gotos are the way to go.

Name: Anonymous 2015-06-06 6:14

>>622
Cuddler

Name: Anonymous 2015-06-13 16:29

Browsers that treat locally-added CA certs equivalent to builtin ones are complicit in malicious AV and firewall products' attacks on users.

Name: Anonymous 2015-06-14 16:34

What will be this browser's policy on HTTP referers?
It's an absurd that websites know which website you were browsing before going to their page.

Name: Cudder !cXCudderUE 2015-06-15 5:55

>>624
If they were treated differently it would take control away from the user. Those who give up freedom for security deserve neither.

>>625
On, domain-exact (e.g. example.com->example.com will send, example.com->foo.example.com won't, and neither will foo.example.com->example.com), deeper-or-same (allows example.com->foo.example.com but not the other way around), off. Configurable globally and for each domain.

Name: Anonymous 2015-06-15 6:25

>>625
Always copy paste the link. Never click on it.

Name: Anonymous 2015-06-27 22:11

Webkit has many tools to deal with fingerprinting.
https://trac.webkit.org/wiki/Fingerprinting

How will your browser engine deal with this?
Also, what's left until you make the current progress public?

Name: del 2015-06-27 22:56

del

Name: Cudder !cXCudderUE 2015-06-28 14:09

>>628
The majority of that page has to do with JS, which means it is completely irrelevant to my browser at the moment: it doesn't have JS yet, and I don't plan to think about the details of it anytime soon. JS features will likely be configurable on a per-site basis.

CSS media queries - this is CSS3, so it is basically ignored.
CSS fonts - needs JavaScript to work, so irrelevant.
CSS visited - user-configurable per-site, and I'm probably going to indicate visited/not-visited some other way through the UI anyway (e.g. status bar indication) so it's no big loss.
Plugins - user-configurable per-site.

User-Agent: your choice. Set it to whatever you want, or don't send one at all.
ETag tracking: not supported at all because there is currently no plans to do any caching.
"Do not track" header: useless bureaucracy bullshit. You draw more attention using it than not.

TLS/SSL Session IDs: irrelevant network layer concern, and depends what is doing SSL/TLS. The proxy I currently run everything through does not support session resumption at all.

Also, if I'm not posting any updates, then assume nothing has happened.

Name: Anonymous 2015-06-28 14:51

>>630
Also, if I'm not posting any updates, then assume nothing has happened.
Okay, that's reasonable.
But what is the mile-stone you want to reach before releasing it in the public domain? Why not release what you have so far right now, so we can start playing with it early on?

Name: Cudder !cXCudderUE 2015-06-28 17:05

>>631
But what is the mile-stone you want to reach before releasing it in the public domain?
Acid2 pass. I've mentioned this before, read the threads - especially the one on dis.4chan which was where this whole thing started. ("Low resource web browser")

Currently none of the lightweight browsers, i.e. Dillo, NetSurf, etc. have been known to pass Acid2. Thus, there is no point in releasing something that can't even match existing lightweight browsers in terms of rendering support. I'm not aiming at the links/w3m crowd with a text-based one. It has to be at least NetSurf/Dillo level, maybe even better than IE6, for it to be interesting.

Why not release what you have so far right now, so we can start playing with it early on?
There is nothing much to play with. At the moment, it is only an HTML parser and a very incomplete CSS parser. The only thing it has in terms of UI is a crude DOM viewer you can see in http://bbs.progrider.org/prog/read/1406427616/123 .

http://bbs.progrider.org/prog/read/1434199339/13

I'm still bloody busy so don't expect anything to happen for the next 2-3 weeks...

Name: Anonymous 2015-06-28 17:50

>>1

webkit is not so bad, i was trying to load a very big HTML file recently, google chrome used 40 megs of RAM, firefox about 150 MB, and internet explorer about 200 megs.

anyway, what are you expecting, the web is a fucking clusterfuck and it doesnt help that browsers are written in sepples.

Name: Cudder !cXCudderUE 2015-07-01 14:34

>>633
Define "very big". It can't have been over 1MB and I assume your RAM usage is the expansion and not the base because Chrome definitely takes more than 40MB just showing a blank page.

Name: Anonymous 2015-07-03 8:12

I don't know man, call me a dreamer, but something inside me tells me one day Cudder will surprise us.

Name: Anonymous 2015-07-03 14:35

>>634
big enough that it hurts when I walk the day after

Name: Anonymous 2015-07-03 17:01

>>632
Whom are you quoting?

Name: Cudder !cXCudderUE 2015-07-12 15:55

Best associative data structure for element attributes and CSS properties? There's only a few hundred of the standard ones in total, but they'll be retrieved very often, especially the CSS ones.

Hash tables and fixed arrays are the fastest but most memory-bloating, trees are sort of in the middle, and resizeable arrays and linked lists are O(n) (probably n < 10 for elements and < 100 for CSS most of the time) but smallest.

More disturbingly: Why doesn't there seem to be any information on the time complexities of various operations like attribute lookup in existing browsers!?

Name: Anonymous 2015-07-12 22:48

>>638
Nobody cares to take the time to measure it. So what's stopping you from downloading the source and running your own measurements?

Name: Anonymous 2015-07-13 4:35

>>638
Because it's a document scripting language not something to write an OS in. If it's too bloated, crash the browser and no one will care.

Name: Test 2015-07-13 6:02

I am surprised at 2 things, aftyer not being here in more than a year:

1. this server and domain still live
2. this thread is alive

Cudder, you are one heck of a trooper.

Reviewing the thread, I had an epiphany. Knowing that HTML and CSS are shit markup languages, and you are using ASM to build your browser, why not form new methods to represent the DOM values that are their specifications. It'd make for easier parsing and algorithms, by performing new methods of their representations.

Here's one raw example to illustrate my point by no means the one I want implemented:
Element, name, ASM representation, value
Doctype, html , dth , 3000h
doc_attributes, htmllang, dth + lang#, 3200h
doc_attributes, htmlmanifest, dth + manifest(), 3100h
Mediatype, img , mi , 5000h
Mediatype, music , mu , 6000h
Mediatype, video , mv , 7000h

html_content, head , hh , 30f0h
head_attributes, , hha , 30e0h
html_content, body , hb , 30d0h
body_attributes, onafterprint , hbap , 30c0h
body_attributes, onbeforeprint , hbbp , 30b0h
body_attributes, onbeforeunload , hbul , 30a0h
body_element, article , hbea , 30afh
body_element, section , hbes , 30aeh
body_element, nav, hben , 30adh
[...]


You can also use a lattice to represent values that are "unlocked" to quickly output said HTML/CSS values in a codex. You recall old video games that use matrix master passwords, that if the correct AND OR if condition met, it would return said gate or value for the main loop:
e.g.: https://i1.ytimg.com/vi/kE4aJwDhQ94/hqdefault.jpg
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

Sample `elements` in doctype->html being used:
3 0 0 7 2 0 0 3
0 7 8 0 3 0 5 0
9 0 0 8 0 2 0 2
3 0 5 0 0 0 3 0
0 1 7 0 0 4 0 0
0 6 0 0 5 0 0 9
5 4 0 0 0 4 0 3
0 1 7 0 0 2 0 0

There are many ways you can re-represenmt the values, and quickly call on the addresses that call the render types for the DOM.

-----
Also, for anyone here, please ignore W3C. They are asshats. WHATWG is doing proper standardizations since '04.

Name: Cudder !cXCudderUE 2015-07-13 6:30

>>639,640
That explains why web apps are so fucking slow... and I hate reading source code because it looks like the shit in >>1. But here, for probably the first time on the public Web, is the complexities of attribute storage in the most common browser engines.

WebKit:
https://github.com/WebKit/webkit/blob/master/Source/WebCore/dom/Element.cpp

A resizable array of unsorted(!) structures. Funny that elements themselves don't have attributes, but a secondary element->attribute hash table is used. Code is disturbingly verbose; just count how many function calls you have to go through from setAttribute to when the thing actually gets written to the array. The resizeable array itself is a bloody verbose mess too:

https://github.com/WebKit/webkit/blob/master/Source/WTF/wtf/Vector.h

Gecko:
https://hg.mozilla.org/mozilla-central/file/eab21ec484bb/dom/base/FragmentOrElement.h

One resizeable, unsorted array in each element that holds both children and attributes, with a bit of weird hashtable-like hybrid thing:

https://hg.mozilla.org/mozilla-central/file/eab21ec484bb/dom/base/nsAttrAndChildArray.cpp

Code feels a bit less verbose and is more readable than WebKit.

Trident (version used in IE4, no public link to source available):

Resizeable unsorted array allocated off end of element structure.

NetSurf:

Doubly-linked, doubly-indirect(!) unsorted list.

Dillo:

No attributes stored in element structure itself! Reparses the markup for every attribute retrieval operation. :facepalm:

tl;dr: O(n) except for Gecko which may be O(1) for some cases ("mapped attributes".)

I'll go with an unsorted parallel array for my browser; it's probably not going to be worse than what's out there already(especially those "lightweight" browsers at the end) and likely slightly better cache-wise to use parallel arrays than arrays of structures.

Next part: CSS property-value storage. There are many more KV pairs on average than with attributes, so I expect to see some different data structures.

Name: Anonymous 2015-07-13 7:54

>>642
*Cudder is all talk and no action*

Name: Cudder !cXCudderUE 2015-07-18 15:54

>>641
I have no idea what you're trying to say but it seems interesting enough. You need to elucidate more.

>>643
Thinking before doing seems to be a skill that is rapidly degrading in the current generation... >>549 is an example of what happens if you just dive in and start writing code with a minimum amount of brain use.

Name: Anonymous 2015-07-18 16:33

>>644
Could you at least document all your ideas and prototypes so far? I want to start contributing to an ASM browser in my limited free-time, but I`m not an EXPERT PROGRAMMER enough to start from scratch.
Make a summarize with everything you have and post a link to it. You could use pastebin if it`s too big for progrider.
It`s just that currently you talk and talk, but we have nothing.

Name: Anonymous 2015-07-18 21:13

Maximize ENTERPRISE SCALABLE SOLUTIONS while minimizing BRAIN USE.

Name: Anonymous 2015-07-18 21:38

>>645
ASM browser
Do you look forward to enjoying the compatibility issues on every other platform?

Name: Anonymous 2015-07-18 22:31

>>647
Yes

Name: Cudder !cXCudderUE 2015-07-19 0:16

>>645
Make a summarize with everything you have and post a link to it.
https://dis.4chan.org/read/prog/1321853871
http://bbs.progrider.org/prog/read/1406427616

Everything interesting enough about it I've been posting in the previous thread and this thread. If you don't have enough of an attention span to read them, you don't have enough of an attention span to write a browser in Asm.

Name: Anonymous 2015-07-19 1:02

>>649
Not that guy, but could you give us the highlights of those threads and which information is still relevant? Thanks.

Name: Anonymous 2015-07-19 1:51

>>650
Not Cudder, but could you learn to read? Thanks.

Name: Anonymous 2015-07-19 2:12

>>651
That same guy you replied to, I just want to know what from those threads is still relevant today.

Name: Cudder !cXCudderUE 2015-07-19 5:12

>>652
Everything?

Name: Anonymous 2015-07-19 13:44

https://dis.4chan.org/read/prog/1321853871
That thread was almost 4 years ago. wow.

Name: Cudder !cXCudderUE 2015-07-19 16:08

>>654
August 2011. It was around the time Mozilla released Firefox 4 and started the ridiculous version number race with Google that I realised how horribly user-hostile and mindlessly oppressive browsers had become and it was necessary to do something about it.

Here's the current roadmap:

- HTML parser/DOM generation (pretty much done)
- CSS parser (currently working on)
- CSS box generation and attribute computation
- Renderer
- Network/UI/Misc
** public-domain release **
- JavaScript? WebGL? ...?

Name: Anonymous 2015-07-19 16:38

>>655
Could you make the public-domain release before the UI?
Others could use the core of the browser engine to write their own UIs.

Name: Anonymous 2015-07-19 23:08

>>656
No one will and you know it. It may come out one day that Cudder is a tranny\donated money to have Hitler cloned\wants to integrate SystemD and there will be lots of outrage and 666 forks, but those will die off in less than a week and everyone will forget about them and keep using his release.

Name: Anonymous 2015-07-20 20:14

It's too big a task to keep the browser safe. It takes an incredible amount of effort to find and eliminate security holes. To code a browser in assembly would probably make it even more unsecure than other browsers. By the time the browser is in beta phase, you probably have to run it sandboxed anyway, and that eliminated all the benefits of it.

Name: Anonymous 2015-07-21 0:27

Name: Anonymous 2015-07-21 0:46

>>659
cool story bro?

Name: Anonymous 2015-07-21 6:57

>>659
Do people really think they have no direction if they learn multiple languages?

Name: Cudder !cXCudderUE 2015-07-21 10:43

>>658
Actually, no. If you're worried about buffer overflows and such, I've probably spent more time thinking about the lengths of things when designing this in a day than most C developers have in a week.

Of course if you eventually decide to use this browser with plugins like Flash and get pwned because of an exploit in that, it's not my problem... I don't blacklist or whitelist, I let the user decide. Freedom > security.

Name: Anonymous 2015-07-21 21:32

I started a thread here to see if anyone would help Cudder.
http://board.flatassembler.net/topic.php?t=18379

PeExecutable is a pick. If anyone want to take over the discussion, the password for the account is QBc7#PF_T-qAjI7(c9
I'm out. Good luck.

Name: Anonymous 2015-07-21 22:22

PLUGIN MY ANUS

Name: Anonymous 2015-07-21 22:30

>>663
I'd gladly help Cudder to cuck her husband.

Name: SATANIC TRIPS 2015-07-21 22:36

SATANIC TRIPS GET

Name: Anonymous 2015-07-21 22:50

>>663
Wow that thread sucks. I'll take "Who are you quoting" and the rest of you niggers any day over that cancerous garbage.

Name: Anonymous 2015-07-21 23:01

>>663,665
I'd gladly help cudder to punish her daughter!

Name: Anonymous 2015-07-21 23:05

>>663
Wow, it worked.

Name: Anonymous 2015-07-21 23:14

@PeExecutable
Shalom, kike!

@typedef
Who the fuck are you quoting?

Also, this thread sucks. I'll take the niggers of progrider.org any day over that cancerous garbage.
Whoever did this, you could at least post the truth about homosexuals and atheists. That would be a useful ban, unlike this one.

Name: Anonymous 2015-07-21 23:24

>>668
Lewd!

Name: Anonymous 2015-07-21 23:35

>>663
Wow, they just immediately had a really long winded and pointless discussion about gamedev that was also devoid of anything interesting. Like, a discussion they put a lot of effort into. Those are some long fucking off topic and boring paragraphs. And then when you bring that up, they shift the blame on you. Like it's your fault they are such boring assholes. ``You should have have written the OP a different way.'' Blah blah blah. Then everything else they say is completely useless. What a toxic group of boring people. If I could punch them in the face like the barbaric nigger I am, I would.

Name: Anonymous 2015-07-21 23:59

>>670
I deleted it.
typedef is cool, the issue is the fuckers talking about game-dev all of a sudden on cudder-browser's thread. Off-topic bitches.

Name: Cudder !cXCudderUE 2015-07-22 5:07

>>663
Copying my posts, complete with the few typos, is not helpful. They were intended to be read by those already familiar with /prog/4chan culture, not random users somewhere else.

Besides, I don't need any help at the moment and the whole browser will likely not be in Asm; only the lower-level parts.

Name: Anonymous 2015-07-22 13:47

>>674
Sorry, I only wanted to help.
I'm ashamed, Cudder-sama!

Name: Anonymous 2015-07-22 21:29

Please forgive >>675-kun Cudder-sama! I don't want ze to commit sepuku!

Name: Anonymous 2015-07-22 23:18

'>ze

Epic!

Name: Marisa Kirisame 2015-07-23 1:10

Requires the /Ze option.

Name: Anonymous 2015-07-23 2:13

>>678
OrdinaryMagician?

Name: Anonymous 2015-07-23 11:13

>>679
He is Cudder's second personality.

Name: Anonymous 2015-07-24 18:05

Name: Anonymous 2015-07-24 18:25

>>681
godoc
golang
Utter garbage.

Name: Anonymous 2015-08-09 16:19

Name: Anonymous 2015-08-09 16:29

With the CSS3 border-radius property, you can give any element "rounded corners".

Name: Anonymous 2015-08-09 18:23

>>684
HTML+CSS is all people should need. http://codepen.io/philhoyt/pen/ujHzd
But they use JavaShit for everything, for our sadness.

Name: Cudder !cXCudderUE 2015-08-10 6:17

>>683
What's the point? Does someone really think Win95 predates Ethernet?

Name: Cudder !cXCudderUE 2015-08-11 13:33

For those now-borked links to the old /prog/, you will need to get the archive from here:

http://bbs.progrider.org/prog/read/1437614471

Name: Anonymous 2015-08-11 14:01

>>686
>>687
Hi there!

You seem to have made a bit of a mistake in your post. Luckily, the users of /prog/ are always willing to help you clear this problem right up! You appear to have used a tripcode when posting, but your identity has nothing at all to do with the conversation! Whoops! You should always remember to stop using your tripcode when the thread it was used for is gone, unless another one is started! Posting with a tripcode when it isn't necessary is poor form. You should always try to post anonymously, unless your identity is absolutely vital to the post that you're making!

Now, there's no need to thank me - I'm just doing my bait to help you get used to the anonymous text-board culture!

Name: Anonymous 2015-08-11 20:36

>>686
LAN networking was the point of ethernet at the time. Since the only real way to access the internet for home users was dialup, the computers sold then rarely had NICs. I doubt that anyone still makes drivers for a Win95, much less hardware that fits a motherboard that old.

This makes me think of a new vaporware I'm going to work on for ten minutes and forget about. How about a BBS that you have to dial in to, but that's hosted over the various free VoIP things like Jewgle Voice or Skype?

Name: Anonymous 2015-08-11 22:16

>>688
Hi there!

You seem to have gotten dubs with your post. Luckily, the users of /prog/ are always willing to check your dubs right up! You appear to have gotten a post number ending in repeating digits when posting! Great! We will always remember to check your dubs when the board you are posting in is a textboard! Posting with a dubs when it is always necessary is great form. We will always try to check your dubs following the culture of the site, since your dubs are absolutely vital to the post that you're making!

Now, there's no need to thank us - we're just doing our best to help your GET in the text-board culture!

Name: Anonymous 2015-08-12 23:46

This thread is bloated

Name: Anonymous 2015-08-13 11:12

>>689
What in the nigger shit are you spouting? There's no difference at the OS endpoint of LAN vs internet networking. Go kill yourself.

Name: Anonymous 2015-08-13 14:27

>>692
Dailup and ISDN modems used RS-232 not Ethernet, cretin.

Name: Anonymous 2015-08-14 20:47

>>693
What the fuck does that have anything to do with IP?

If your machine can route IP over a LAN, there's no difference in routing IP over the internet, fuckwad.

Name: Anonymous 2015-08-14 21:07

>>694
You're the one that's going off on some retarded tangent. Follow the conversation, muttonhead.

Name: Cudder !cXCudderUE 2015-11-09 6:17

Finally with a little more time to work on the CSS part, I've done the matcher and some of the datastructures but still need to figure out a good way to store the properties and their values. Most of them could be stored together with their values in a single 32-bit integer. I just need to map them all...

Name: Anonymous 2015-11-09 17:00

All word and action none!

Name: Anonymous 2015-11-09 19:33

>>696
a good way to store the properties and their values
You need a map from properties to values? How about a fucking map?

Name: Anonymous 2015-11-09 19:36

Does C even have maps?

Name: Anonymous 2015-11-10 2:41

>>699
Nice dubs
>>700
These too.

Name: Cudder !cXCudderUE 2015-11-10 3:53

>>698
Yes, it will be a map, but exactly what type of map? There's plenty of generic types of map but the space of properties and values is small enough that it should be possible to represent e.g. background-color: black in a single 32-bit value.

Careful design of the data structures is important because it's what sets this browser apart - it's not just another Firefox or Chrome or IE clone. Everthing has been designed from the beginning to be as efficient as it could be, before I write a single line of code. I know you might be thinking "just use a std::map<something, something>" but have you ever seen the actual implementation of such things? They're great for mapping a great many arbitrary objects to other arbitrary objects, but horribly bloated for what this particular application needs: a mapping from ~256 or less keys, to a similarly restricted set of small values ("inherit", "none", one of 2^24 colours, one of 256 opacity levels, etc.) A DOM node is not going to have several thousand CSS properties set on it (there aren't even that many in total in CSS3!), and even a hundred is going to be rare. Using a datastructure designed and optimised for 2 or 3 orders of magnitude more items for this is retarded in the same way as invoking Quicksort on a 4-element array.

>>697
The pen is mightier than the sword.

Name: Anonymous 2015-11-10 4:14

Why didn't K&R make it to the standardization committee?

They got lost because C doesn't have a map.

Name: Anonymous 2015-11-10 5:01

>>701
And here we see a Cudder adding unmaintainable bloat to his shit, in a futile attempt to reduce bloat.

Name: Cudder !cXCudderUE 2015-11-10 6:39

>>703
unmaintainable
Buzzword detected.

Name: sage 2015-11-10 7:44

sage

Name: Anonymous 2015-11-10 14:03

>>705
Epic sage meme image/b/oard/b/ro!

Name: Anonymous 2015-11-10 19:27

>>701
What's wrong with just a bitmap of a node's specified properties and a corresponding list of values? The values can be "fat", i.e. background-color, background-repeat squashed into one "background" struct.

Name: Anonymous 2015-11-10 22:07

>>701
That's a genius idea.

Name: Cudder !cXCudderUE 2015-11-11 16:15

>>707
I'd considered that, but that's 32+ bytes just to keep the bitmap in addition to the values, and the list would still need to be searched. A hash table is a bit rich for the purpose, although something resembling hashing might be a good idea.

>>708
I don't think it's that genius of an idea. Maybe to the incompetents that pass as programmers these days, but the demosceners and other old-school programmers would think nothing of it.

Name: Anonymous 2015-11-11 16:23

dubs

Name: Anonymous 2015-11-11 18:06

>>710
NO U

Name: Anonymous 2015-11-11 22:52

>>704
"Unmaintainable" is a non-ENTERPRISE term learned by any learning programmer who's looked at their own personal projects from 6 months ago.

Name: Cudder !cXCudderUE 2015-11-12 4:57

>>712
s/learning/degrading/

If you can't understand code you wrote before, you're not getting any better - you're getting worse.

http://www.linusakesson.net/programming/kernighans-lever/

I noticed that there's a CSS 2.2 spec being developed:
https://drafts.csswg.org/css2/

Name: Anonymous 2015-11-12 8:24

>>713
Truly a non-programming poster.

If you can't maintain the project you wrote 6 months ago, and the code looks like bullshit, you've made a step towards satori.

If you've never experienced this early in your programming, you have never learned anything and are destined to be a shit apper.

Name: Cudder !cXCudderUE 2015-11-12 8:52

>>714
You make no sense. But then again, neither do most of the stupid trends in "software engineering".

Name: Anonymous 2015-11-12 9:04

>>713
No way. I couldn't even begin to explain how http://bbs.progrider.org/prog/read/1444460614 works and I wrote it only a month ago. I certainly don't agree that I've gotten worse.

Your problem, Cudder, is that all those hormone replacement drugs have eaten a hole in the part of your brain that lets you do academic circlejerking properly. You spend too much time on long projects like writing that web browser in 6502 assembly or the IDA killer or the SoftICE replacement or whatever and never just program something that popped into your head on a whim. You're a Michelangelo in a world that needs Picassos. Lighten up a bit, light up a blunt, and program something fun.

Name: Anonymous 2015-11-12 14:50

>>716
That is expected, you are using lisp.

Name: Cudder !cXCudderUE 2015-11-13 8:26

>>716
You are certainly degrading. That's just Church numerals done using lists instead of function applications. Nothing interesting about that. (I do know about "academic circlejerking" and all that abstract bullshite, but whether I actually want to do that stuff is a different matter.)

light up a blunt
That explains a lot...

Name: Anonymous 2015-11-14 10:39

>>716
No wonder you can't explain how it works: it's unreadable from all the define bloat! Should've used def instead.

Name: Anonymous 2015-11-14 16:47

>>719
Clojure is not a LISP.

Name: Anonymous 2015-11-14 17:33

>>720
But Scheme with

(define-syntax def
(syntax-rules ()
((def a ...)
(define a ...))))

(define-syntax lam
(syntax-rules ()
((lam a ...)
(lambda a ...)))))


is.

Name: Anonymous 2015-11-14 22:00

>>716
I remember everything I write. It's like a photographic memory for concepts.

Name: Anonymous 2016-02-06 20:46

What do you think will be the hardest part on the browser?
The rendering engine, I guess?
Could you make a release of what you have so far once the CSS layout is done?

Name: Anonymous 2016-02-07 10:49

>>723
The rendering engine isn't necessarily hard, just tedious with all the tiny bits of configurability that it needs to support.

What's hard is making sure it's secure, and trying to optimize it.

Name: Anonymous 2016-02-07 11:01

>>720
Clojure is a Lisp.

Name: Anonymous 2016-02-07 11:09

>>723
Don't count on it.
*Cudder is all talk and no action*

Name: Anonymous 2016-02-07 13:00

>>724
What's hard is making sure it's secure, and trying to optimize it.
*optimise
And no, it isn't.

Name: Anonymous 2016-02-07 13:29

>>727
Yes it is. Cudder's solution is incomplete as he decided to ignore the full range of the specification. Feel free to prove me wrong by writing a full spec, fully secure and fully optimized web renderer.

Name: Anonymous 2016-02-07 13:31

>>728
Feel free to prove yourself right.

Name: Cudder !cXCudderUE 2016-02-07 16:34

>>723
What do you think will be the hardest part on the browser?
JavaScript
Could you make a release of what you have so far once the CSS layout is done?
Once Acid2 passes.

>>724
What do you mean exactly by "secure"? It seems everyone is throwing this word around like some kind of holy grail when it could mean anything from DRM and other user-hostile shit (fuck no, it's not going to be "secure" if you mean that) to buffer overflows (won't happen, there's very little dynamic allocation and what there is will have lengths checked very thoroughly...)

just tedious with all the tiny bits of configurability that it needs to support.
Calculating widths/heights is the most annoying part. One of the reasons why it's taking so long is because I'm trying to simplify it --- the spec is almost always more verbose and complex than it needs to be. Earlier in this thread I shrunk the HTML tokeniser from the absolutely bloated spec into a <1KB binary, so I expect some level of savings for the CSS parser and renderer... optimisation comes naturally from design.

Name: Anonymous 2016-02-07 17:11

>>730
Alrigiht bitch. Forget showing us the web browser. How about you just show us ANYTHING you have written. You see, we aren't even quite sure you know how to program.

Name: Cudder !cXCudderUE 2016-02-07 17:59

>>731
RTFT, I've posted code and screenshots already.

Name: Anonymous 2016-02-07 18:35

>>732
40 lines of asm, lol

Name: Anonymous 2016-02-07 22:30

>>730
JavaScript

I don't think many people care about that.
Good part of the web works without it. Of course it'd be a nice addition to your browser, but I don't think it's essential.

Once Acid2 passes.

How far is it into passing Acid2?

Name: Anonymous 2016-02-07 22:39

Mr. Cudder, do you think your Asm/C performant browser will allow users who have an Intel DX4 to browse the modern web? What do you expect will be the requirements?

Name: Anonymous 2016-02-08 0:53

Shank those who bully Cudder!

Name: Cudder !cXCudderUE 2016-02-08 1:13

>>734
The JS comes later. I'll definitely release a version without any JS support. I don't know how far, since I'm still designing the layout algorithm.

Name: Anonymous 2016-02-08 4:55

Cudder is a male jew roleplaying as a girl.

Name: Anonymous 2016-02-08 12:55

can we get a roadmap with what's done so far and what's missing before the first release (acid2 pass)?

Name: Cudder !cXCudderUE 2016-02-09 3:39

>>739
Done:
- HTML tokeniser
- HTML parser
- DOM tree

In progress:
- CSS tokeniser
- CSS parser
- CSS box generation
- layout

Planned:
- Network
- Rendering UI
- Configurator

Name: Anonymous 2016-02-09 4:25

>>740
Of those, which won't be portable?
Network, of course.
For rendering UI, have you looked into Vulkan? Or do you still plan on doing Win32 and then Xlib, separately?

Name: Cudder !cXCudderUE 2016-02-09 11:12

Vulkan
No. No fucking "cross platform" bullshit, especially something that isn't even really out yet. We don't need another bloody layer of bloat or a dozen multi-MB libraries. Windows version will be single binary expected to be <1MB and usable on Win98SE up to (probably, won't test) 10.

I don't really know what to do with *nix yet. Horribly fragmented ecosystem with tons of unstable dependencies. AFAIK there's nothing like a MSVCRT.DLL that I can just link with and get all the standard C library functions on any version of Linux. Instead there is this whole fucked-up symbol-versioning GNU bloatstrosity with all the different libc versions. And that's not even getting into the retarded ELF symbol export/import system which is more like "throw everything together randomly". The PLT/GOT/etc. crap is headache-inducing every time I have to deal with it.

If I was making a hybrid OS with the best features of Windows and *nix, it would definitely have dynamic linking more like the Windows system.

Name: Anonymous 2016-02-09 11:27

>>742
Forget loonix, it's too shitty to use anymore. Stick with real UNIX® and VMS.

Name: Anonymous 2016-02-09 12:13

Instead there is this whole fucked-up symbol-versioning GNU bloatstrosity with all the different libc versions

Just static link against musl libc and forget GNU anything.
http://www.etalabs.net/compare_libcs.html

Static linking against musl will make it work on any linux, regardless of the installed libc.

Name: Anonymous 2016-02-09 14:35

>>740
Lol, just parsing the text into the proper data structures can be done in an afternoon, you fucking n00b.

Name: Anonymous 2016-02-09 17:54

>>742
Static link you fucking ifiot

Name: Anonymous 2016-02-09 18:23

If cudder ever releases anything (I know, let me dream for a second), I'd put money on it being slower than modern browsers, with a similar footprint as browsers of similar limited functionality.

Name: Anonymous 2016-02-09 21:16

CUDDLER why aren't you implementing your own PCB traces and transistors?

Name: Anonymous 2016-02-09 21:17

>>748
Real world considered harmful.

Name: Anonymous 2016-02-09 21:19

>>749
Did somebody just say "Haskell"?

Name: Anonymous 2016-02-09 21:24

>>749-750
Stop making it look like I'm replying to myself. I'd like a real reply, preferably from CLUTTER shirmself.
Anyway, CUTLERY lives in a world with neither deadlines nor abstract thinking, so >>749 is right and >>750 is wrong.

Name: Anonymous 2016-02-09 21:25

>>751
But >>750 didn't claim anything, how can he be wrong?

Name: Anonymous 2016-02-09 21:26

>>752
You know when you show your sister your hentai collection, and she says "that's just wrong"? It's like that.

Name: Anonymous 2016-02-09 21:27

>>753
Cudder should rewrite Windows in Haskell, though.

Name: Anonymous 2016-02-09 21:51

I'll show all you cocksuckers when I make a web browser out of vacuum tubes!

Name: Anonymous 2016-02-09 22:01

>>755
I'll show all you cocksuckers when I make a hydraulic computer!

Name: Anonymous 2016-02-10 3:14

I'll show all you cocksuckers when I make a penis pump computer!

Name: Cudder !cXCudderUE 2016-02-10 4:38

>>744,746
static link
That's even worse.

>>745
Yes, a shitty inefficient version can be done in almost no time. I could probably have an acid2-passing horribly bloated browser-ish thing if I just used C++ and banged out classes all day long for a week. That's not the point. It's taking so long because [1] I have tons of other stuff to do and [2] I'm thinking carefully, very carefully, about how to do it. Amortised over the past few months I've probably been spending less than an hour a day on this.

>>747 start reading around >>123. Parser is overall twice as fast as Chrome's, less than 1/10th the size, and that's with a stupid C part I haven't done much optimisation on yet.

Name: Anonymous 2016-02-10 4:47

Couldn't CUDDER, you know, fork Webkit and add his own transvestite assembly code instead of reinventing the wheel?

Name: Anonymous 2016-02-10 5:04

>>758
namefags need to go

Name: Anonymous 2016-02-10 8:40

What's a "cudder"? I remember "cudder jobs" in the Jewish Guild in Skyrim, they were about planting dicks in people's anuses. So are /prog/ cudders the ones who post jewish material to make the government vote degenerate laws?

Name: Cudder !cXCudderUE 2016-02-10 12:04

>>759
You missed the first few hundred posts in this thread?

Name: Anonymous 2016-02-10 12:23

>>761
Read sicp you bastard!

Name: Anonymous 2016-02-10 19:53

>>758
That's even worse.
Well-reasoned, rational argument presented with excellent points, counterpoints and examples as always, Cűnther.

Name: Anonymous 2016-02-11 0:10

>>758
Even if that's true (which it isn't), it's probably fucking terrible Russian code that's hardcoded to everything at hand right now, and as soon as there's any change to HTML/CSS/JS for you to support, you'll have to start over because you don't know what the fuck you're doing.

Name: Anonymous 2016-02-11 20:33

>>765

Russian code
terrible
What've you been smoking? Russians are twice smarter than you.

Name: Anonymous 2016-02-11 21:59

Russians are masters at micro-optimizing useless shit at the expense of everything else, yielding unusable garbage that happens to run 1 brittle scenario quickly.

Name: Anonymous 2016-02-11 23:25

>>767
Is FV russian?

Name: Anonymous 2016-02-12 1:32

>>768
I hear that Russia sends furries to gulags, so probably not.

Name: Anonymous 2016-02-12 12:06

>>768
A couple of years ago he was a 14yo Russian kid living in Finland. Many things could've changed since then.

Name: Anonymous 2016-02-13 15:20

Scrollbars aren't even useful.

Name: Anonymous 2016-02-13 17:07

holy shit remember the get the trips that come soon here!

Name: Anonymous 2016-02-15 19:55

bump for trips

Name: Anonymous 2016-02-16 10:20

Fuck

Name: Anonymous 2016-02-16 10:20

your

Name: Anonymous 2016-02-16 10:20

trips,

Name: Anonymous 2016-02-16 10:21

nigger.

Name: Anonymous 2016-02-16 17:33

>>777
[commentator] son you can't just up and give yourself the alley-oop and slam dunk it yourself, shame on you.

[referee] I declare that the 777 get shall be given to poster of >>778 instead!

[poster] *raises hands, bows before cheering /prog/lidites

Name: Anonymous 2016-02-16 17:39

>>78
If you care about the fucking number on the post, go kill yourself. I shall amuse myself in foiling your number-grabbing attempts. Suck on my >>774-777!

Name: Anonymous 2016-02-16 17:39

>>779
See, I care so little about the numbers on posts that I can't even get them correct!

Name: Anonymous 2016-02-16 17:40

>>779
I'm going to rape you in your face.

Name: Anonymous 2016-02-16 18:04

>>781
lol, triggered over some shitty board number meta-faggotry. Eat your own walnut-sized brain.

Name: Anonymous 2016-02-16 18:31

Less of this.

Name: Anonymous 2016-02-17 2:45

>>778
it's /prog/lodyte, you illiterate proglodyte

Name: Anonymous 2016-02-17 10:11

>>782
You're a retard. You say board number meta-faggottry is shitty, but at the same time you do much worse shit posting here.

Name: Cudder !cXCudderUE 2016-02-18 11:36

>>764
Ever seen how fucking bloated statically linked executables are?

Name: Cudder !cXCudderUE 2016-02-18 11:37

Figuring out how to do floats is the most difficult part of the CSS layout algorithm. I have the rest of the design almost complete.

Also, dreamliner GET.

Name: Anonymous 2016-02-18 12:05

>>787
Whom are you're le quoting? xD

Name: Anonymous 2016-02-18 15:26

>>788

Lol, can you believe it??

This guy... forgot to check his own dubs. LOL. What a nab.

Name: Anonymous 2016-02-18 17:23

>>786
If you eschew dependencies on bloated libraries in favour of writing your own ASM to do the same job? As lean as you can get them.

Name: Cudder !cXCudderUE 2016-02-19 12:03

>>790
Linking dynamically uses 12 bytes + length of name + 5 bytes per call (using jump table), or 6 bytes + length of name + 6 bytes per call (using calls into the IAT slots.)

Linking statically uses size of function + 5 bytes per call.

The library is already on the system so might as well use it if it doesn't make my binary bigger.

Name: Anonymous 2016-02-20 3:21

>>701
You might want to hold all colours as rgba, converting them first if they are represented differently in CSS source. Special values like none and inherit could use full transparency and store special meaning in the rgb part, i.e. color:none means full transparency and is equal rgba(0,0,0,0).

I don't know if you want to support CSS and styling completely, but you could consider ignoring some of the CSS attributes, like named fonts in font-family field, etc.

Another thing worth noting is that HTML actually supports only 2 (3) types of tags: block and inline (and inline-block). You could save space ignoring multiple tags and move their special attributes to CSS, as default values. Tables are equal to table blocks of row blocks of field inline-blocks with undefined content.

Name: Anonymous 2016-02-20 5:14

>>791
WHO THE FUCK CARES? The very nature of the HTML/CSS/ES specs demand a fuckton of state, especially if you're going to have decent dynamic response times, and you're quibbling over the number of bytes in a function call.

You have no goddamn idea what makes bloat and what doesn't. There's assburgery nitpicking, which can be somewhat amusing, but this is just being a fucking retard.

Name: Anonymous 2016-02-20 13:07

>>791
Surely if you're hand-optimising the rest of your program in ASM your bottleneck becomes the dynamic libraries that (a) are more often than not going to be written in C and "optimised" by some crappy compiler, and (b) going to have wildly variable performance characteristics on different systems, as they will use different compilers, different library implementations and different versions of libc.

The size of the functions alone (which is apparently your primary concern with static linking) should surely be a negligible cost when taking everything else into account.

Name: Anonymous 2016-02-20 23:56

>>793,794
You both don't seem to understand the purpose of cudder-sama's project.

Name: Anonymous 2016-02-21 9:40

>>795
Is it to spur discussion on a low-traffic BBS, or to waste everyone's time?

Name: Cudder !cXCudderUE 2016-02-21 12:06

>>792
Inherit is resolved at box-generation time. Opacity is stored with the foreground colour, since the background can be other than just a colour.

I'm essentially supporting all of CSS2.1.

You could save space ignoring multiple tags and move their special attributes to CSS, as default values.
Not sure what you mean by this.

Name: Anonymous 2016-02-22 1:04

A web browser is an application that retrieves documents over a network, and renders them on a computer screen.

To think of a web browser as more than that is insanity. Yet people insist on continuing to try to shoehorn other technologies in to a web browser, and users pay the price in usability while vendors pay the price in maintainability.

Name: Anonymous 2016-02-22 1:26

Firefox needs ~550MiB just for 5 tabs.

Name: Anonymous 2016-02-22 1:35

>>798
The web as a distributed application platform had evolved into this way. It is not insane to ask for reasonable extensions to a simple distributed platform. What I like about web technologies as a distributed application platform is that the development work is high level. I can develop applications very quickly because the low level mechanisms are highly abstracted allowing me to focus on business logic rather than OSI network/operating system logic.

>>799
That measure is meaningless without more context. You need to specify what exact pages you have loaded and what extensions and plugins you have loaded.

Name: Anonymous 2016-02-22 1:53

>>800
You need to specify what exact pages you have loaded and what extensions and plugins you have loaded.
Noscript, ublock, https everywhere and classic theme restorer.
Two of the tabs were /prog/rider, one was github, another one was mangaupdates and the last one was google.

Name: Anonymous 2016-02-24 5:23

>>801
Since I don't use ublock, I can't say more about it other than it is a blacklist program, it works by maintaining a massive list of entries to filter in memory. I presume you're using Noscript in whitelist mode so that list would likely to be far smaller than ublock. The other two addons are trivial in memory usage.

As for web page usage, progrider is trivial so that shouldn't count for much. Mangaupdates is also trivial so that shouldn't count for much. Github has plenty of Javascript working the DOM so that could account for something. I assume you've got a Google search page filled with search results, that isn't very big but it has some Javascript to run those pages.

Other factors to consider when evaluating memory usage include Adobe Flash, corrupt Firefox user profiles, Java plugins and Firefox cache.

For comparison, I'm running Firefox 44, with default caching, no Flash, current Java, Lightbeam and uMatrix in whitelist mode. 1 tab for Wikipedia, 2 tabs for Slashdot, 8 tabs for Funnyjunk, 1 tab for progrider, 1 tab for Mangaupdates, 1 tab with Tiddlywiki. I'm using 14 tabs and 650mb of RAM.

Name: Anonymous 2016-02-24 6:27

>>802
I am using the esr version in Debian GNU/Linux.

Name: Anonymous 2016-02-24 11:40

>>803
The Eric S. Raymond version?

Name: Anonymous 2016-02-24 15:27

>>22
Nice dubz bro. I am so sorry that your dubz went unnotices for such a long time.

Name: Anonymous 2016-02-24 23:28

>>805
Fuck off.

Name: Cudder !cXCudderUE 2016-02-28 17:37

A 3.2GHz Nehalem can do wordwrapping of text at 1GB/s. That was unexpectedly fast.

Now, onwards with the rest of the layout algorithm...

Name: Anonymous 2016-02-28 19:26

>>807
What flavour of word-wrapping? Naıve? Word? LaTeX? Does it do justification?

Need deets, cuddler!

Name: Anonymous 2016-02-28 20:50

>>808
LaTeX
That's a macro system. U MENA TEX

Name: california 2016-02-28 23:10

california

Name: Cudder !cXCudderUE 2016-02-29 11:34

>>808
Wordwrapping, obviously. What justification are you talking about?

Name: Anonymous 2016-02-29 12:31

>>811
this line wrapped, unjustified
veeeeeeeeeeeeeeeeeeeeeeeeeeery long word


and

this line wrapped, justified
veeeeeeeeeeeeeeeeeeeeeeeeeeery long word


How come an expert programmer such as yourself have never heard of typesetting? We demand answers!

Name: Anonymous 2016-02-29 14:23

What justification are you talking about

Wow, cudder really is retarded

Name: Anonymous 2016-02-29 15:07

Of course, changing fonts within a line, bidirectional text, Unicode combiner characters, wrapping of other non-textual inline-block contents and other such options are all fully supported, right?

Name: Anonymous 2016-02-29 18:45

Let's reinvent the fucking scrollbar, which every goddamn platform with a UI already has, and make it behave subtly different from the native one!

Maybe it's easier to make your own UI than to deal with handling hundreds of different UIs. For instance, if the scrollbar width never varies, then that's one less thing you have to worry about.

Name: Anonymous 2016-03-01 0:23

>>815
Why in all of the holy fuck would you have to worry about the width of the scrollbar? The fact that you try to design around that means you're absolute shit and should be shot in the face. It's people like you that demand pixel-specific everything dogpiling HTML & CSS, instead of letting the goddamn software handle it. You fucking retarded monkey who can't handle anything but manual manipulation.

Name: Cudder !cXCudderUE 2016-03-01 12:05

>>812
You mean text-align? Currently only the former. The latter will make it in at some point.

programmer
typesetting
Duh.

*14
changing fonts within a line
Yes.
bidirectional text, Unicode combiner characters
No.
wrapping of other non-textual inline-block contents
Yes.

Name: Anonymous 2016-03-01 15:13

Duh.
Cudder's no Knuth.

Name: Anonymous 2016-03-02 9:28

I am justified and ancient.

Name: Cudder !cXCudderUE 2016-03-02 12:21

Conforming user agents [p. 47] may interpret the value ’justify’ as ’left’ or ’right’, depending on whether the element’s default writing direction is left-to-right or
right-to-left, respectively.
Looks like I don't even need to care about that... one less thing to implement.

Name: Anonymous 2016-03-02 16:44

>>817
Duh.

You don't have to be a designer to know what ``justify'' means. You could possibly just have, you know, observed justification in print, and been curious about the fact that all of the line endings line up vertically, and perhaps even looked it up.

But instead, you are going to pretend like there's no way that you could have known about it, since after all, you're a programmer, there's no reason for you to look at a newspaper.

Why would you admit fault, or acknowledge that you might not know everything (or even enough) about what you're trying to do here? There's ASM boilerplate to type!

10/10 IHBT by EXPERT SHITPOSTING, IWNHAND, IHL

Name: Anonymous 2016-03-02 23:44

>>821
This is cudder, the programming ricer extraordinaire. This is the same person who believes static compiling is bloat and 10kb of overhead in a binary is meaningful on today's computers.

Name: Anonymous 2016-03-04 0:49

>>742
Windows version will be single binary expected to be <1MB and usable on Win98SE up to (probably, won't test) 10.
So you're implying you will test on Windows 98 but NOT the current version of Windows? Fucking LOL, this is your brain on hormone replacement estrogen pills.

Name: Cudder !cXCudderUE 2016-03-04 9:04

>>823
I'm not touching Win10. I recommend others do the same.

Name: Noah Goldberg 2016-03-04 23:56

>>824
What's the matter? Afraid that the Microsoft will help the police will find your child porn, sicko? Or maybe it is jihadi plans you are trying to hide. You will not escape the surveillance network forever!

Name: Anonymous 2016-03-05 3:21

The only version of Windows worth supporting is 7.

Name: Anonymous 2016-03-05 9:49

If you use 8 with an alternate start menu, it's better than 7.

Pirate both.

Name: Anonymous 2016-03-05 10:18

If you use Linux or FreeBSD, it's better than Windows.

Pirate both.

Name: Cudder !qti0cSUIYU 2016-03-05 14:04

>>826
XP is superior.

Name: Anonymous 2016-03-05 14:32

>>829
Can I expect to find you in ReactOS contributors?

Name: Anonymous 2016-03-05 14:32

This piece of shit tastes better than that piece of shit.

Name: Anonymous 2016-03-05 14:34

>>831
But should I pirate either?

Name: Cudder !cXCudderUE 2016-03-06 17:04

>>830
I won't answer that question. But I can say that I use WINE, and my browser will be tested on WINE too.

Name: Bad dubs 2016-03-06 18:03

>>833
Bad dubs

Name: Anonymous 2016-03-06 19:41

>>833
Cudder-sama, please marry me! I will suck your dick while you drive your old trucks! Please!

Name: Anonymous 2016-03-06 19:48

Didn't know this place had so many freetards

Name: Anonymous 2016-03-06 21:43

>>833
We should all become a familly. >>835 will marry Cudder-sama and I will mary her daughter while >>835 pretends to be my daddy!

Name: Anonymous 2016-03-07 0:45

>>836
The Venn diagram containing Windows and Satori is two points with infinite distance between them.

Name: Anonymous 2016-03-07 11:37

>>838
infinite
Shalom!!!

Name: Cudder !cXCudderUE 2016-03-09 4:22

Something to think about...

The basic box types are inline, block, and inline-block. Why is there no block-inline?

Name: Anonymous 2016-03-09 4:25

>>840
The application is unordered. It's like a partial derivative in that sense.

Name: Anonymous 2016-03-10 4:24

Can someone tell me what this thread is about? I've been seeing it on the front page since it was created but it always seemed boring so I never read it, and now it's so long that I can't be bothered reading the whole thing. Just a quick summary with bullets for key points and pivotal moments will do. Thanks.

Name: Anonymous 2016-03-10 5:28

>>842
Cudder is pregnant.

Name: Anonymous 2016-03-10 22:43

>>842
*Cudder is all talk and no action*

Name: Anonymous 2016-03-11 4:05

>>842
Cudder is making a browser but hasn't demonstrated anything yet.

Name: Anonymous 2016-03-11 5:30

>>845
Cudder is dicking around with weak text processing but hasn't demonstrated anything yet.
FTFY

Name: Anonymous 2016-03-11 10:33

Why do you hate elf cudder? How's PE better?

Name: Cudder !cXCudderUE 2016-03-11 12:12

I'm currently busy with other things.

>>847
The prominent design-by-committee infestation throughout the standard, the fact that it tries to be an object and executable format, and the seriously-fucked-up dynamic linking system.

Also it's basically impossible to get the normal GNU tools to produce a good single-section ELF with all the shit stripped out, whereas MS' linker will easily do that for a PE.

Name: Anonymous 2016-03-12 10:46

Name: Cudder !cXCudderUE 2016-03-12 18:51

>>849
That is not mine... and I wouldn't even want to call it mine.

https://github.com/lexborisov/myhtml/blob/master/source/myhtml/tokenizer.c

Holy. Fucking. Shit. :facepalm: :facepalm: :visagearecaceae:

Over 2K lines of C spread across half a dozen files just to implement an HTML tokeniser!? Mine is less than 768 lines of x86 Asm, in one file. What sort of - dogmatic - insanity causes someone to turn a reasonably simple state machine that would most sanely be implemented as a single switch into a bloody mess of several dozen functions with massive code duplication? This is like copy-paste coding taken to the next level. A lot of what I wrote about Hubbub (NetSurf)'s tokeniser in >>549 applies to this abomination too, including the several-dozen-character-long variable names, horrificly duplicated EOF checking every-fucking-where, and allocating (and freeing) on every goddamn token the thing processes.

The most amusing part is there is not a single switch statement anywhere!!!

This level of bloatyness is only slightly reasonable if he was being paid per line of code.

Name: Anonymous 2016-03-12 21:34

>>850
Why the fuck can't people comment their goddamn code? All the naming is around internal conventions, and who knows what the fuck if((qnode->begin - 2) > tmp_begin) or whatever is actually testing for without reverse engineering the entire fucking thing.

Also, Cudder, you haven't shown your 768 lines, so we have no clue if it actually works, or how slow it is. Duplication of code like EOF checking and avoiding inner-loop switch cases tend to speed things up. Larger code is VERY often faster, if it's larger because it knows the exact cases coming up and does custom handling for each.

You waffle around with such vague ideas of "bloat", like a nigger waffles around with concepts in a math class.

Name: Cudder !cXCudderUE 2016-03-13 1:21

Larger code is VERY often faster
You obviously don't know what a cache is. Loop unrolling and similar bloating "optimisations" are dead, they died a decade ago along with RISC, ultra-high clock speeds, and long pipelines.

I have posted benchmarks above in >>131. The tokeniser takes around 20 clock cycles per input byte on average and that's including all the processing to determine tags and attributes. There is no fucking way his tokeniser can do better than that - the overhead of all the unnecessary instructions introduced by manually keeping track of state and calling functions (through a pretty unpredictable indirect call) and accessing and allocating memory when it doesn't need to is going to slow things down significantly. Looking at the benchmark you can see the slowest part is the tree construction, which is - currently - in C, and does do the stupid one-function-per-state thing, but that's just because I wanted to quickly get something working, and never got around to rewriting it better/examining the spec more closely to find what could be simplified.

Name: Anonymous 2016-03-13 3:22

>>852
Stop thinking tiny, like a tiny brained fuck.

Consider a system with a caching filesystem, compared to one without. The caching one is larger, both in code and memory footprint, but is going to be hella faster than any simple disk access code that hits the drive every time.

Consider a JIT compiler, versus a bytecode interpreter. Which one is "bigger" and "bloated", and which do you think run faster?

Consider any system with actual brains in it, be it predictive analysis and heuristics, or just something which has been hardcoded & optimized for AOT measured slow paths.

And that's not even getting into tons and tons of benefits of larger architectures for being able to configure, debug, and instrument what the fuck is going on in your computer, instead of your shitty opaque asm code.

You are clueless and bring no value to the world, defending your absolute shit to the very end. I hate hearing your ignorant, anti-reality blather. Not just this, but every single word you've said. Kill yourself.

Name: Anonymous 2016-03-13 3:56

>>853
No bully

Name: Anonymous 2016-03-13 4:18

JIT compiler,
I have two words for you:

LOL JAVA

Name: Anonymous 2016-03-13 4:33

>>855
Java is a shitty language, but the JVM is pretty damn impressive. There's a reason there's a ton of other languages for it.

Name: Anonymous 2016-03-13 4:39

There's a reason there's a ton of other languages for it.
Because their creators were too lazy to learn x86 assembly and optimisation techniques?

Name: Anonymous 2016-03-13 5:18

>>856
but the JVM is pretty damn impressive.
The only thing impressive about the JVM is how much memory and CPU it uses. It only exists to help sell hugely overpriced Enterprise Quality™ hardware.

Name: Anonymous 2016-03-13 8:11

myhtml_status_t myhtml_tokenizer_state_init(myhtml_t* myhtml)
{
myhtml->parse_state_func = (myhtml_tokenizer_state_f*)mymalloc(sizeof(myhtml_tokenizer_state_f) *
((MyHTML_TOKENIZER_STATE_LAST_ENTRY *
MyHTML_TOKENIZER_STATE_LAST_ENTRY) + 1));

if(myhtml->parse_state_func == NULL)
return MyHTML_STATUS_TOKENIZER_ERROR_MEMORY_ALLOCATION;

myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_DATA] = myhtml_tokenizer_state_data;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_TAG_OPEN] = myhtml_tokenizer_state_tag_open;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_TAG_NAME] = myhtml_tokenizer_state_tag_name;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_END_TAG_OPEN] = myhtml_tokenizer_state_end_tag_open;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SELF_CLOSING_START_TAG] = myhtml_tokenizer_state_self_closing_start_tag;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_MARKUP_DECLARATION_OPEN] = myhtml_tokenizer_state_markup_declaration_open;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_BEFORE_ATTRIBUTE_NAME] = myhtml_tokenizer_state_before_attribute_name;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_ATTRIBUTE_NAME] = myhtml_tokenizer_state_attribute_name;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_AFTER_ATTRIBUTE_NAME] = myhtml_tokenizer_state_after_attribute_name;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_BEFORE_ATTRIBUTE_VALUE] = myhtml_tokenizer_state_before_attribute_value;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_ATTRIBUTE_VALUE_DOUBLE_QUOTED] = myhtml_tokenizer_state_attribute_value_double_quoted;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_ATTRIBUTE_VALUE_SINGLE_QUOTED] = myhtml_tokenizer_state_attribute_value_single_quoted;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_ATTRIBUTE_VALUE_UNQUOTED] = myhtml_tokenizer_state_attribute_value_unquoted;

// comments
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_COMMENT] = myhtml_tokenizer_state_comment;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_COMMENT_END] = myhtml_tokenizer_state_comment_end;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_COMMENT_END_DASH] = myhtml_tokenizer_state_comment_end_dash;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_COMMENT_END_BANG] = myhtml_tokenizer_state_comment_end_bang;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_BOGUS_COMMENT] = myhtml_tokenizer_state_bogus_comment;

// cdata
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_CDATA_SECTION] = myhtml_tokenizer_state_cdata_section;

// rcdata
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_RCDATA] = myhtml_tokenizer_state_rcdata;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_RCDATA_LESS_THAN_SIGN] = myhtml_tokenizer_state_rcdata_less_than_sign;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_RCDATA_END_TAG_OPEN] = myhtml_tokenizer_state_rcdata_end_tag_open;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_RCDATA_END_TAG_NAME] = myhtml_tokenizer_state_rcdata_end_tag_name;

// rawtext
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_RAWTEXT] = myhtml_tokenizer_state_rawtext;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_RAWTEXT_LESS_THAN_SIGN] = myhtml_tokenizer_state_rawtext_less_than_sign;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_RAWTEXT_END_TAG_OPEN] = myhtml_tokenizer_state_rawtext_end_tag_open;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_RAWTEXT_END_TAG_NAME] = myhtml_tokenizer_state_rawtext_end_tag_name;

// plaintext
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_PLAINTEXT] = myhtml_tokenizer_state_plaintext;

// doctype
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_DOCTYPE] = myhtml_tokenizer_state_doctype;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_BEFORE_DOCTYPE_NAME] = myhtml_tokenizer_state_before_doctype_name;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_DOCTYPE_NAME] = myhtml_tokenizer_state_doctype_name;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_AFTER_DOCTYPE_NAME] = myhtml_tokenizer_state_after_doctype_name;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_CUSTOM_AFTER_DOCTYPE_NAME_A_Z] = myhtml_tokenizer_state_custom_after_doctype_name_a_z;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_BEFORE_DOCTYPE_PUBLIC_IDENTIFIER] = myhtml_tokenizer_state_before_doctype_public_identifier;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED] = myhtml_tokenizer_state_doctype_public_identifier_double_quoted;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED] = myhtml_tokenizer_state_doctype_public_identifier_single_quoted;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_AFTER_DOCTYPE_PUBLIC_IDENTIFIER] = myhtml_tokenizer_state_after_doctype_public_identifier;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED] = myhtml_tokenizer_state_doctype_system_identifier_double_quoted;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED] = myhtml_tokenizer_state_doctype_system_identifier_single_quoted;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_AFTER_DOCTYPE_SYSTEM_IDENTIFIER] = myhtml_tokenizer_state_after_doctype_system_identifier;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_BOGUS_DOCTYPE] = myhtml_tokenizer_state_bogus_doctype;

// script
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA] = myhtml_tokenizer_state_script_data;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_LESS_THAN_SIGN] = myhtml_tokenizer_state_script_data_less_than_sign;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_END_TAG_OPEN] = myhtml_tokenizer_state_script_data_end_tag_open;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_END_TAG_NAME] = myhtml_tokenizer_state_script_data_end_tag_name;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPE_START] = myhtml_tokenizer_state_script_data_escape_start;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPE_START_DASH] = myhtml_tokenizer_state_script_data_escape_start_dash;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED] = myhtml_tokenizer_state_script_data_escaped;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED_DASH] = myhtml_tokenizer_state_script_data_escaped_dash;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED_DASH_DASH] = myhtml_tokenizer_state_script_data_escaped_dash_dash;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN] = myhtml_tokenizer_state_script_data_escaped_less_than_sign;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED_END_TAG_OPEN] = myhtml_tokenizer_state_script_data_escaped_end_tag_open;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED_END_TAG_NAME] = myhtml_tokenizer_state_script_data_escaped_end_tag_name;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPE_START] = myhtml_tokenizer_state_script_data_double_escape_start;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPED] = myhtml_tokenizer_state_script_data_double_escaped;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPED_DASH] = myhtml_tokenizer_state_script_data_double_escaped_dash;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH] = myhtml_tokenizer_state_script_data_double_escaped_dash_dash;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN] = myhtml_tokenizer_state_script_data_double_escaped_less_than_sign;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPE_END] = myhtml_tokenizer_state_script_data_double_escape_end;

// ***********
// for ends
// *********
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_DATA)] = myhtml_tokenizer_end_state_data;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_TAG_OPEN)] = myhtml_tokenizer_end_state_tag_open;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_TAG_NAME)] = myhtml_tokenizer_end_state_tag_name;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_END_TAG_OPEN)] = myhtml_tokenizer_end_state_end_tag_open;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SELF_CLOSING_START_TAG)] = myhtml_tokenizer_end_state_self_closing_start_tag;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_MARKUP_DECLARATION_OPEN)] = myhtml_tokenizer_end_state_markup_declaration_open;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_BEFORE_ATTRIBUTE_NAME)] = myhtml_tokenizer_end_state_before_attribute_name;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_ATTRIBUTE_NAME)] = myhtml_tokenizer_end_state_attribute_name;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_AFTER_ATTRIBUTE_NAME)] = myhtml_tokenizer_end_state_after_attribute_name;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_BEFORE_ATTRIBUTE_VALUE)] = myhtml_tokenizer_end_state_before_attribute_value;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_ATTRIBUTE_VALUE_DOUBLE_QUOTED)] = myhtml_tokenizer_end_state_attribute_value_double_quoted;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_ATTRIBUTE_VALUE_SINGLE_QUOTED)] = myhtml_tokenizer_end_state_attribute_value_single_quoted;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_ATTRIBUTE_VALUE_UNQUOTED)] = myhtml_tokenizer_end_state_attribute_value_unquoted;

// for ends comments
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_COMMENT)] = myhtml_tokenizer_end_state_comment;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_COMMENT_END)] = myhtml_tokenizer_end_state_comment_end;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_COMMENT_END_DASH)] = myhtml_tokenizer_end_state_comment_end_dash;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_COMMENT_END_BANG)] = myhtml_tokenizer_end_state_comment_end_bang;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_BOGUS_COMMENT)] = myhtml_tokenizer_end_state_bogus_comment;

// for ends cdata
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_CDATA_SECTION)] = myhtml_tokenizer_end_state_cdata_section;

// rcdata
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_RCDATA)] = myhtml_tokenizer_end_state_rcdata;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_RCDATA_LESS_THAN_SIGN)] = myhtml_tokenizer_end_state_rcdata_less_than_sign;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_RCDATA_END_TAG_OPEN)] = myhtml_tokenizer_end_state_rcdata_end_tag_open;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_RCDATA_END_TAG_NAME)] = myhtml_tokenizer_end_state_rcdata_end_tag_name;

// rawtext
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_RAWTEXT)] = myhtml_tokenizer_end_state_rawtext;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_RAWTEXT_LESS_THAN_SIGN)] = myhtml_tokenizer_end_state_rawtext_less_than_sign;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_RAWTEXT_END_TAG_OPEN)] = myhtml_tokenizer_end_state_rawtext_end_tag_open;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_RAWTEXT_END_TAG_NAME)] = myhtml_tokenizer_end_state_rawtext_end_tag_name;

// for ends plaintext
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_PLAINTEXT)] = myhtml_tokenizer_end_state_plaintext;

// for ends doctype
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_DOCTYPE)] = myhtml_tokenizer_end_state_doctype;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_BEFORE_DOCTYPE_NAME)] = myhtml_tokenizer_end_state_before_doctype_name;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_DOCTYPE_NAME)] = myhtml_tokenizer_end_state_doctype_name;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_AFTER_DOCTYPE_NAME)] = myhtml_tokenizer_end_state_after_doctype_name;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_CUSTOM_AFTER_DOCTYPE_NAME_A_Z)] = myhtml_tokenizer_end_state_custom_after_doctype_name_a_z;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_BEFORE_DOCTYPE_PUBLIC_IDENTIFIER)] = myhtml_tokenizer_end_state_before_doctype_public_identifier;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED)] = myhtml_tokenizer_end_state_doctype_public_identifier_double_quoted;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED)] = myhtml_tokenizer_end_state_doctype_public_identifier_single_quoted;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_AFTER_DOCTYPE_PUBLIC_IDENTIFIER)] = myhtml_tokenizer_end_state_after_doctype_public_identifier;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED)] = myhtml_tokenizer_end_state_doctype_system_identifier_double_quoted;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED)] = myhtml_tokenizer_end_state_doctype_system_identifier_single_quoted;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_AFTER_DOCTYPE_SYSTEM_IDENTIFIER)] = myhtml_tokenizer_end_state_after_doctype_system_identifier;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_BOGUS_DOCTYPE)] = myhtml_tokenizer_end_state_bogus_doctype;

// for ends script
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA)] = myhtml_tokenizer_end_state_script_data;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_LESS_THAN_SIGN)] = myhtml_tokenizer_end_state_script_data_less_than_sign;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_END_TAG_OPEN)] = myhtml_tokenizer_end_state_script_data_end_tag_open;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_END_TAG_NAME)] = myhtml_tokenizer_end_state_script_data_end_tag_name;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPE_START)] = myhtml_tokenizer_end_state_script_data_escape_start;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPE_START_DASH)] = myhtml_tokenizer_end_state_script_data_escape_start_dash;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED)] = myhtml_tokenizer_end_state_script_data_escaped;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED_DASH)] = myhtml_tokenizer_end_state_script_data_escaped_dash;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED_DASH_DASH)] = myhtml_tokenizer_end_state_script_data_escaped_dash_dash;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN)] = myhtml_tokenizer_end_state_script_data_escaped_less_than_sign;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED_END_TAG_OPEN)] = myhtml_tokenizer_end_state_script_data_escaped_end_tag_open;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED_END_TAG_NAME)] = myhtml_tokenizer_end_state_script_data_escaped_end_tag_name;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPE_START)] = myhtml_tokenizer_end_state_script_data_double_escape_start;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPED)] = myhtml_tokenizer_end_state_script_data_double_escaped;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPED_DASH)] = myhtml_tokenizer_end_state_script_data_double_escaped_dash;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH)] = myhtml_tokenizer_end_state_script_data_double_escaped_dash_dash;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN)] = myhtml_tokenizer_end_state_script_data_double_escaped_less_than_sign;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPE_END)] = myhtml_tokenizer_end_state_script_data_double_escape_end;

return MyHTML_STATUS_OK;
}

Name: Anonymous 2016-03-13 9:52

>>856
Pretty impressive at devouring memory? Yeah.

Name: Anonymous 2016-03-13 12:50

>>859
This makes me depressed.

Name: Cudder !cXCudderUE 2016-03-13 16:20

>>856
It took SunOracle over two decades to get Java even slightly approaching what could be considered reasonable efficiency. And it's still a ridiculously bloated pig.

>>859
The disgustingly long variable names, excessive use of typedefs, "== NULL", and general idiocy of dynamically allocating an array which will be filled completely with constants in every fucking parser object strongly reeks of Enterprise Java-ism.

>>861
Here's something to cheer you up, the tag name processing in my tokeniser:

; found '<', what comes next?
call [ebp+htmlp.func_getchar] ; EOF - emit text
eof_emittext1:
call isalpha
jc not_alpha
tag_name:
call emit_text ; emit this text
lea eax, [esi-1]
mov [ebp+htmlp.data_ptr], eax ; start of tag name
push 1
pop [ebp+htmlp.data_len]
mov [ebp+htmlp.n_attrs], 0
tag_name_loop:
call [ebp+htmlp.func_getchar] ; EOF - ignore
call chk_tag_end_iswhs
jz find_attr_loop
inc dword ptr [ebp+htmlp.data_len]
jmp tag_name_loop


Those 14 instructions (and the procs it calls) are essentially all that's needed to detect and process a tag name. The spec and the monster posted above need substantially more to do the same thing. The jumps to code you can't see are the state transitions directly. None of that mh_state_set (try to find in which of those files it's defined and how many levels of indirection there are, then facepalm when you see what it actually does), returning from a function, then going through an indirect call maybe back into the same damn function bullshit.

Name: Anonymous 2016-03-13 17:27

>>862
Are you seriously saying you'd write HTML parser in assembly?

What a load of shit.

Name: Anonymous 2016-03-14 1:47

>>863
Are you seriously saying you decided to post without ever having read most of this thread?

What a fucking idiot.

Name: Anonymous 2016-03-14 15:15

The number of times you piss and moan about long variable names is inversely proportional to your IQ.

Go solve a real problem, you annoying fuck. Everything you do is just code masturbation, and nobody wants to see it or touch it.

Name: Anonymous 2016-03-15 12:16

>>865
Check 'em

Name: Anonymous 2016-03-15 12:20

>>865
I want to touch Cudder's penis!

Name: Anonymous 2016-03-15 14:26

I want to touch the penis of Cudder's daughter!

Name: Anonymous 2016-03-17 18:18

Enterprise leads to death

Name: Cudder !cXCudderUE 2016-03-18 11:31

CSS parsing. The way the spec is written makes it seem like you have to extract the whole series of tokens for the selector before parsing them separately, when all that's needed is to parse the selectors at the same time as everything else, as they come from the tokeniser. I wonder how many implementations out there needlessly allocate a secondary array of tokens (or allocate tokens, for that matter) just so it can rescan them to parse selectors...

It's also funny to see developers chasing the parallelism dream with things like Servo that have only demonstrated at best 2-3x speedup with multiple cores and even more complex code, when I can probably get 10x speedup with simple, single-threaded Asm that's at least an order of magnitude smaller. The CSS matching is also easily parallelisable if I really want to.

Name: Anonymous 2016-03-18 12:55

>>870
Protip:The world of computing and web browsing is far larger than just Windows XP on x86.

Name: Anonymous 2016-03-18 18:01

>>870
Boss, I've just obliterated the number of instructions and allocations in our CSS selector parser!
Great, what's the speedup gain?
It runs in a thousandth of the time for simple selectors!
I mean when loading our test pages.
Well, time spent parsing CSS is already dwarfed by network and graphical operations, and I haven't done most of the spec yet, so not that much. Like a fraction of a percent.
How long did this take?
About four weeks.
Will the interns be able to read it?
Sure, the ASM fits on two screens!
You're fired.

Name: Anonymous 2016-03-18 18:32

>>870
expert shitposting

Name: Anonymous 2016-03-19 7:37

>>871
It's not that much larger.

>>872
Get The Fuck Out of my /prog/ you corporate drone. We are artists. Not greedy intellectually dead whores who care only about money and increasing the number of bullets we can write on word document formatted resumes.

Name: Anonymous 2016-03-19 9:38

>>874
I second that. Programming is the art, coding is the job. And I sure haven't seen this board called /coding/.

Name: Anonymous 2016-03-19 11:28

>>874
If you followed the thread, Cudder is writing this browser as part of shim's job.

>>875
Coding is merely the act of writing code down. Programming is making computers do things, usually via coding. Development is producing a software piece.
To make a house-building analogy: Coding is hammering, programming is building, and development is, well, development.

Name: Anonymous 2016-03-19 20:36

checkem

Name: Anonymous 2016-03-23 13:04

>>876
If you followed the thread, Cudder is writing this browser as part of shim's job.
You are wrong.

Programming is making computers do things, usually via coding
No. Programming in conjuring the spirits of the computer with our spells. Nothing more and nothing less. All other things within the software world are irrelevant, a waste of one's time, and intellect.

Name: Cudder !cXCudderUE 2016-03-26 17:01

CSS parser can be really simple.

css-file = (WHS* | CDO | CDC | '@' ID [ '{' block '}' ] | selector-block)*
block = (WHS* | '@' ID [ '{' block '}' ] | selector-block)*
selector-block = selector [ ',' WHS* selector ]* '{' decl-list '}'
selector = nodeselect [ sel-comb nodeselect ]*
sel-comb = WHS* ['+' | '>' | '~'] WHS* | WHS+
nodeselect = [ID | '*'] attrsel* | attrsel+
attrsel = '[' WHS* ID WHS* [matchop WHS* [ID|STR] WHS*]? ']'
| '#' NAME
| '.' ID
| ':' ':'? ID
matchop = ['~' | '|' | '^' | '$' | '*' ]? '='

A few hundred bytes should be sufficient to parse this.

Name: Anonymous 2016-03-26 17:10

>>879
How's progress on CSS parser, tokeniser and box generation?
I want to see you get into layout development already and pass the freaking Acid2 test.
Show those bastards, Cudder!

Name: Anonymous 2016-03-26 17:33

>>879,880
Samefag

Name: Anonymous 2016-03-26 20:07

>>878
Someone had to write the browser you use to shitpost. Hardly conjuring spirits, as this thread has shown. If that isn't programming though, what is it?

Name: Anonymous 2016-03-26 20:15

>>882
It counjures the spirits that fetch information from an international network and display them on a monitor. Turning a dead stone into a scrying window that can show anything on Earth is a feat Mediaeval magicians could only dream of.

Name: Anonymous 2016-03-26 20:55

>>882
It's hardly complicated to send a post request to a server.

Name: Cudder !cXCudderUE 2016-03-27 23:27

>>880
Looking at CSS tokeniser+parser. I've set aside box generation and rendering for now since there's no use in doing that without having a way of actually consuming CSS.

There's an odd '||' operator which I can't find anywhere else in the spec:

http://stackoverflow.com/questions/30702971/how-is-the-operator-used-in-css

https://lists.w3.org/Archives/Public/www-style/2013Apr/0059.html

So it's completely fucking useless unless you're a circlejerking academic steeped in that LL/LR/etc. bullshit, and I've carefully read every single word of the CSS3 selectors spec without finding a single mention of it. It only has ~=, |=, ^=, $=, and *=. THANK YOU W3C FOR MAKING STUPID IMPLEMENTATIONS MORE INEFFICIENT! :facepalm:

Name: Anonymous 2016-03-30 0:25

>>881
autist

Name: Anonymous 2016-03-30 0:27

>>885
No one cares unless you're posting code

Name: Anonymous 2016-03-30 0:31

check 'em

Name: Anonymous 2016-03-30 3:43

>>887
and then we laugh

Name: Anonymous 2016-03-30 10:17

Hi! I'm new to progride.org. So this Cudder is the local uber-haxor assclown?

Name: Cudder !cXCudderUE 2016-03-30 10:41

>>887
Here you go, a part of the CSS tokeniser.

mov eax, [esi]
cmp eax 2d2d213ch
jz emit_cdo
cmp ax, word 2d2dh
jnz not_cdc
cmp [esi+2], byte 3eh
jz emit_cdc
not_cdc:
cmp ax, 2a2fh
jz do_comment
cmp ah, 3dh
jnz not_matchop
cmp al, 24h
jz matchop
...
not_matchop:

Name: Anonymous 2016-03-30 11:13

Name: Anonymous 2016-03-30 13:28

>>890
*Cudder is all talk and no action*

Name: Anonymous 2016-03-30 14:07

>>891
[esi]
LOLOLOL wtf is this 32-bit shit? GTFO

Name: Anonymous 2016-03-30 16:07

>>891
What a ridiculous sample. Truly Cudder is all talk and no action.

Name: Anonymous 2016-03-30 16:07

>>895
Can't have too many registers! That makes amd64 bloated or something!

Name: Anonymous 2016-03-30 17:48

>>894
>he fell 4 the b8

Name: Anonymous 2016-03-31 19:02

>>899
Nice dubs

Name: Anonymous 2016-03-31 19:02

>>898
Thanks

Checkem

Name: Anonymous 2016-03-31 19:02

>>901
Thanks

Checkem

Name: Anonymous 2016-03-31 19:03

>>900
Nice dubs

Name: Anonymous 2016-03-31 20:56

>>898-901
ARE YOU OK?

Name: Anonymous 2016-04-01 0:33

>>902
Negro, ¿tú eres sueco?

Name: Anonymous 2016-04-01 10:23

Why is firefucks so bloated? Recently they removed the tab groups however they added the "web developer" tools including a "WebIDE" even though firebug exists for a long time.
Remember the mozilla suite? Wasn't the reason they dropped it due to the bloat? In that case, why did they do the same with firefox?
What do I need firefox hello and firefox pocket for?

Name: Cudder !cXCudderUE 2016-04-01 10:38

>>892
http://c2.com/cgi/wiki?DesignForPerformance

I already got bitten by a stupid design decision in >>133. Also consider that other browsers already have a lot of (complex) optimisations because of how old they are, so if I want to compete I can't not optimise. These optimisations I'm doing actually simplify the code, so there's another benefit -- I take less time writing it and reading it in the future.

>>894,896
You don't need 64 bits if most of them are going to be zero. 64-bit pointers with around half their bits 0 make me want to facepalm every time I see them. Besides, amd64 is a fucking mess of RISC-ism and 8 registers is enough for a lot of things if you use them well. Compilers are just retardedly stupid at register allocation. (Just look at the dismal performance of MIPS with 32 registers... More is not better, except in synthetic microbenchmarks.)

What do I need firefox hello and firefox pocket for?
You don't, Mozilla does. You are the product.

Name: Anonymous 2016-04-01 15:00

>>905
YOUR C2 MEME IS THE MOST EPICESTEST WIN XDDDDDDDDDDDDDDD

Name: Anonymous 2016-04-01 15:21

would everyone please stop taking the Cudder bait

Name: Anonymous 2016-04-01 18:47

>>905
32-bit is not going to last forever. I would be suprised if the next version of Windows even targets it, and a few versions after that, it won't even be supported any more.

Name: Anonymous 2016-04-01 19:44

>>908
Linux already stopped supporting i368.

Name: Anonymous 2016-04-01 20:38

>>909
They never even started.

Name: Anonymous 2016-04-01 22:47

>>910
Check 'em

Name: Anonymous 2016-04-01 23:43

Jews did >>911

Name: Cudder !cXCudderUE 2016-04-02 16:34

>>908
You probably interact with 4-bit CPUs daily and don't know about it. Same for 8 and 16-bit.

32-bit binaries run fine on 64-bit Windows. No need to bloat things up if you don't have a requirement to use huge amounts of memory.

Name: Anonymous 2016-04-02 20:50

>>913
Isn't one major point of """avoiding bloat""" to run faster? 32-bit shit is slower in tons of <4GB cases due to limited number of registers.

Name: Cudder !cXCudderUE 2016-04-03 14:42

>>914
Only if you have a stupid compiler and/or programmer.

Microbenchmarks that are heavy on 64-bit arithmetics will obviously look better in 64-bit mode, but that's very unrepresentative of real code, particularly code that a browser might execute (lots of branches and 32-bit maths, plus memory addressing, all of which don't benefit at all from 64-bit mode and may be even worse because of the lower code density.)

http://www.digitalcitizen.life/google-chrome-64-bit-it-better-32-bit-version
(Ignore the marketing blurb, 32-bit is as fast if not faster and the one thing they didn't show is memory usage --> around 50% more for 64-bit.)

Also, the 64-bit extension being poorly done, means even if there were things that would be better 64 bits at a time, there's no equivalent instruction to express what could be done in 32-bit mode. Where's the "cmp r64, imm64" for example? There's only "cmp r64, r/m64". Either you waste another register to hold the immediate and an instruction to put it there, or suck up an extra memory access. Bastards.

Name: Anonymous 2016-04-03 15:17

You don't want to release the code until it passes acid2, but what about a binary release? I'm really excited about your efficient browser, but you aren't giving us anything for now and I'm afraid it'll take a lot of time until you can get it to pass acid2 (or am I wrong?).

Name: Cudder !cXCudderUE 2016-04-03 17:13

>>916
There will be a binary release.

Another little CSS syntax stupidity: guess where "UNICODE-RANGE" token is actually used. Then look at all the problems with it:

http://www-style.w3.narkive.com/MnRnzeaj/selector-parsing-it-s-easy-to-hit-unexpected-unicode-range-tokens

https://lists.w3.org/Archives/Public/www-style/2003Nov/0123.html

...defining a whole new token, complete with conflicts, for what amounts to a single property value in an at-rule for embedded fonts? DO NOT WANT.

Name: Anonymous 2016-04-03 18:56

All words and action none!

Name: Anonymous 2016-04-03 19:03

>>917
A binary release before the code release?
The code release is when it passes acid2.
When's the binary release?

Name: Anonymous 2016-04-03 19:20

Could you show us how much of your browser is C and how much is Assembly?
cat *.s | wc -l && cat *.c *.h | wc -l

Name: Cudder !cXCudderUE 2016-04-04 5:31

>>919
At the same time, obviously.

>>920
.s
I don't use GNUshit.

Name: Anonymous 2016-04-04 5:41

Checkem

Name: Cudder !cXCudderUE 2016-04-04 8:41

Thinking of "compiling" CSS to x86 instructions directly to make matching even faster and basically do away with any sort of data structure for the selectors since it'll just become a stream of instructions... apparently I'm not the only one who thought of doing this.

https://webkit.org/blog/3271/webkit-css-selector-jit-compiler/

https://www.mail-archive.com/dev-servo@lists.mozilla.org/msg00662.html

Name: Anonymous 2016-04-04 10:16

>>922
Nice dubs!

Name: Anonymous 2016-04-04 15:23

Will the thread ``Why browsers are bloated III'' get to 999 posts without Cudder delivering xir program?
Place your bets.

Name: Anonymous 2016-04-04 15:41

Cudder delivering his browser at 1001!

Name: Anonymous 2016-04-04 15:47

>>925
Cudder haven't delivered a single program since the dawn of text boards

Name: Anonymous 2016-04-04 16:10

>>926
Post 1001 does exist, actually. You just have to link to it specifically to see it. See the Crossposters threads on /lounge/.

Name: Anonymous 2016-04-04 16:19

Cudder is all talk and no action

Name: Anonymous 2016-04-04 16:20

>>928
No one said it didn't.

Name: Anonymous 2016-04-04 16:53

Cudder is all talk and no action

Cudder is all booster, no payload
Cudder is all crown, no filling
Cudder is all foam, no beer
Cudder is all hammer, no nail
Cudder is all hat and no cattle
Cudder is all icing, no cake
Cudder is all lime and salt, no tequila
Cudder is all mouth and no trousers
Cudder is all shot, no powder
Cudder is all sizzle and no steak
Cudder is all wax and no wick

Cudder is all talk and no action

Name: Anonymous 2016-04-04 17:17

>>933
Cool dubs!

Name: Anonymous 2016-04-04 17:18

>>933
Thanks

Name: Anonymous 2016-04-04 19:23

>>930
Yes they did, they said Cudder would publish something.

Name: Anonymous 2016-04-04 20:21

>>934
Here's how the conversation went.
==================================
★ Cudder delivering his browser at 1001!
▲ Post 1001 does exist, actually. You just have to link to it specifically to see it. See the Crossposters threads on /lounge/.
★ No one said it didn't.
==================================
Okay?

Name: Anonymous 2016-04-04 22:02

>>935
My joke was that Cudder will never deliver, thus the post he will deliver it in does not exist. I didn't work out well, so just never mind. I'm changing the subject. I love you, Cudder, 👭👭💑💑💑👺👺💆👄💋❤💙💚💛💓💜💔💕💖💟💞💝💘💗🐇🐰🐭🍭🍭🍦🍦🍧🍨🍨🍧🍬🍎🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍥🍆🍆🍍🍍🌷🌷🌷🍓🍓🍓🌸🌸🌸🌹🌹🌹🌹🌋🌋🌋🗻🗻🗻💐💐💐💒💒💒💌💌💌💍💍💍💎💎👗👗👢👢👢🔰🔰💵💴💶💷💸🎃🎵🎵🎵🎼🎼🔥🔥💦💦💦👪👪👪👪👪👪👪👪👪👪👪👪👪👪👪👪, pleaze marry me!

Name: Anonymous 2016-04-04 22:16

Cudder is married to LAC!

Name: Anonymous 2016-04-05 4:56

Please do not bully Cudder-sama. I'm sure she is doing her best to create a releasable binary for us as we speak. We need to believe in her.

Name: Cudder !cXCudderUE 2016-04-05 11:28

>>925
At the rate you're spamming this thread with useless crap, yes.

Name: Anonymous 2016-04-05 17:35

>>936 is a homosexual

Name: Anonymous 2016-04-05 22:04

>>939
The spamming just keeps this thread alive to shine light on your failure.

Name: Anonymous 2016-04-05 23:00

I AM THE WALRUS

Name: Anonymous 2016-04-05 23:35

I ARE ANDRU
ANDRU LIKES CHILDREN
CHILDREN MAKE ROBOTS
WALRUSES ARE ROBOTS
ANDRU ARE WALRUS

Name: Check 'em 2016-04-06 0:01

>>943
Nice poetry, dude!

Name: Anonymous 2016-04-06 12:46

>>944
Nice dubs, guy!

Name: Anonymous 2016-04-06 17:15

>>945
Sexist assumption, you piece of shit EVIL MALE!

Name: Anonymous 2016-04-08 5:04

>>945 is in fact a piece of male EVIL SHIT

Name: Anonymous 2016-04-08 9:23

Browsers aren't bloated. Web pages are.

Name: Anonymous 2016-04-08 15:44

Web pages aren't bloated. My bowel is.

Name: Cudder !cXCudderUE 2016-04-17 16:16

Some limits to consider:

255 attributes per simple selector ([a1=v1][a2=v2]...[a255=v255])
255 simple selectors per selector (#s1 + .s2 > .s3 #s4 ... s255)
4G selectors in total (theoretical limit, actually limited by memory available)

These limits should be sufficient for basically all the CSS out there... and if it's not, then fuck you. No page should ever have anywhere near that much CSS, and if you do you'll probably crash other browsers and deserve to have your page displayed unstyled.

Name: Anonymous 2016-04-17 16:42

>>950
Just do it dynamically fuckface.

Name: Anonymous 2016-04-17 17:33

>>951
check 'em

Name: Anonymous 2016-04-17 19:47

>>950
Who is this semen demon?

Name: Anonymous 2016-04-17 19:49

>>953
Cudder (pronounced as "cdr")

Name: Anonymous 2016-04-17 20:04

>>955
Check 'em

Name: Anonymous 2016-04-17 22:29

>>954
And how do you pronounce 66cdr99!? There are no vowels. A word with no vowels is LITERALLY UNPRONOUNCEABLE!!!

Name: Anonymous 2016-04-17 23:42

>>956
Try learning Arabic.

Name: Anonymous 2016-04-18 20:56

>>950
Your are making for """more bloat""" because software has to try to get around your fucking bullshit limitations to actually work. There is no goddamn sensible reason for what you're doing, as computers are generating CSS and queries automatically and need room to work in.

Name: Cudder !cXCudderUE 2016-04-19 10:54

>>958
Are there any sites (besides contrived limit-testing test cases) that come anywhere near those limits? How about showing some examples instead of spewing vague "generating CSS and queries automatically " bullshit? That's the sort of attitude that leads to insane ENTERPRISE solutions where 99% of the complexity is there just for 0.1% of the use cases.

WebKit has a maximum nesting depth of 512:

http://trac.webkit.org/browser/trunk/Source/WebCore/page/Settings.h#L206

Firefox is lower, at 200 (not even a byte):

https://hg.mozilla.org/mozilla-central/file/050887c64183/parser/htmlparser/src/nsHTMLTokenizer.cpp#l382

There's no point in having more than 255 attributes per selector either, since HTML5 doesn't define that many. Look at the discussion about CSS property maps above - why use a data structure optimised for thousands or more elements and is dynamic-everything, even if it's "theoretically more efficient", if you will never put more than a dozen or maybe 100 at most in it? Premature generalisation. That's real bloat.

Name: Anonymous 2016-04-19 20:41

>>959
Twitter with infinite scrolling.

Name: Anonymous 2016-04-19 21:25

>>959
My analysis projects load the shit out of the HTML/CSS front-end with tons of auto-generated data and complex queries, and no I'm not going to show you internal commercial work.

Again, WHY IN THE FUCK ARE YOU AFRAID OF COMPUTERS DOING WORK? What sort of bullshit backwards universe do you live in? Make computers work so humans don't have to, you fucking cancerous boil!

Name: Anonymous 2016-04-19 21:34

All work and action none.

Name: Anonymous 2016-04-19 23:28

JACKSON 963 GET

Name: Anonymous 2016-04-20 0:25

>>959
Who is this semen demon?

Name: Cudder !cXCudderUE 2016-04-20 11:14

>>960
Depth, not width. With is limited only by available memory. I've tested my DOM with a page containing 100M elements and it handled it just fine, whereas Firefox and Chrome crashed.

>>961
If you were exceeding those limits your pages wouldn't work in any other browser either.
WHY IN THE FUCK ARE YOU AFRAID OF COMPUTERS DOING WORK?
It's useless, wasted work. https://en.wikipedia.org/wiki/Muda_(Japanese_term) . Ever wonder why your software feels so slow and consumes so much memory and disk space? Your can blame your attitude and all the other programmers with the same attitude for that waste. Idiot.

Name: Anonymous 2016-04-20 11:39

>>964
Check 'em

Name: Anonymous 2016-04-20 12:05

>>965
No, sir/madam, you are the idiot. Software doesn't feel slow, and consumes pennies worth of memory and disk space. Where's the waste, you dipshit?

Fuck you if you're a poor nigger with a 386 trying to run modern software. Your problems aren't relevant in the world anymore.

I run large programs on my workstation, and I inevitably hit any limitation that fuckheads like you put in. Software that comes from "I want to write simple, stupid, fixed-array based BULLSHIT because I'm too FUCKING STUPID of a programmer to write COMPETENT software that can PERFORM UNDER SCALE" is broken, and comes from retarded brains like yourself who need to die.

I will fucking strangle you with my bare hands if I ever see you in person, you shitfucking asshole, because you are a direct enemy of computers not getting in my fucking way and doing ACTUAL WORK, not the fucking masturbatory uselessness you and your like shit upon the world.

Name: Anonymous 2016-04-20 12:14

>>965
Ooh, look at my japanime reference at how smart I think I am!

You don't even understand the concept of "waste". No money is being wasted, and no human time is being wasted, so this is absolutely nothing like the Toyota example.

Any system that's built as "waste-free" as possible will always be the most brittle way to build it. Would you like a hydroelectric dam built next to your house not to waste concrete, and be exactly the thickness which can withstand observed pressures? Any more would be wasteful, right?

It's the same thing with software. You make it not have "waste", and it falls on its face when you try to push it harder. While the rest of the word considers anti-fragility, you explicitly pursue anti-robustness, because robustness happens to use free computational resources.

Name: Anonymous 2016-04-20 12:22

>>967,968
Not happy with Cudder's approach? Write your own web-browser then and stop bullying.

Name: Anonymous 2016-04-20 12:34

>>968
You're asserting that k strategy [1] is always superior.

This is not always the case, it is environment dependent. In terms of parasitic factors (ie our whole consumerist race to exhaust resources [2]) is viable only as long there is enough resources. Sure that computing shifted from r to k, but there's also potential to shift back provided there is enough environmental pressure.

For example, costs of energy rising faster than moore's law, moore's law ceasing to apply, or post-pubble deflationary market ceasing to be the driver of moore's law altogether.

At that point we'll slowly revert back to r strategy, as that would be simply more optimal to succeed in the market.

[1] https://en.wikipedia.org/wiki/R/K_selection_theory
[2] https://en.wikipedia.org/wiki/Optimal_virulence#Trade-off_hypothesis

Name: Anonymous 2016-04-20 14:21

Ohh, look at >>968-san's 4chan meme arrow reference at how smart he thinks he is!

Name: Anonymous 2016-04-20 16:04

>>971
I farted and a little bit of poo came out

Name: Anonymous 2016-04-20 19:03

in for >>1000 thread

Name: Anonymous 2016-04-20 19:39

Jesus christ, do you realize how difficult it is to write a browser? Do you realize how even more (quadratically) difficult this becomes when you anally ASM-ize every little thing?

I admire the ambition but only if you have a realistic plan to get there. I suggest you delete everything so far and start over with Lisp and C++.

Name: Anonymous 2016-04-20 19:42

>>974
Jesus christ, do you realize how difficult it is to render text markup with inline images?

Name: Anonymous 2016-04-20 21:15

>>974
You can see Cudder's roadmap on >>655,740
I'd say his asm approach isn't holding him back so far.
Personally I'm pretty excited about the first release once Acid2 passes. But I'm afraid that's too far away...

Name: Anonymous 2016-04-20 21:16

>>970
My stacked i7-6700K system takes less electricity than my Commodore 64 used to. Your energy cost argument is invalid. There is no waste.

Name: Anonymous 2016-04-20 22:23

>>974
ise

>>967,968,974
Samefag?

Name: Anonymous 2016-04-20 23:54

>>978
As >>967, no. Also, fuck you.

Name: Anonymous 2016-04-21 3:07

My cousin met Cudder at a party in London last year. They ended up fucking. He said it was totally sub-par. She got shit all over his dick, and violently queefed at the end.

Name: Anonymous 2016-04-21 3:12

>>978
As >>974, no. Also, fuck you.

Name: Cudder !cXCudderUE 2016-04-21 11:39

>>967
Software doesn't feel slow
:facepalm:

Your perception has been distorted by so much exposure to ENTERPRISE QUALITY bloatshit that you don't even notice anymore what a fat lazy pig you are. The insane "but it's scalable" argument doesn't hold up, you're basically advocating for people to do the equivalent of getting in the car to drive 10 feet instead of walking; just because YOU usually have to travel 100 times farther doesn't mean it applies to everyone and it's a ridiculous waste to think it does.

>>968
Any system that's built as "waste-free" as possible will always be the most brittle way to build it. Would you like a hydroelectric dam built next to your house not to waste concrete, and be exactly the thickness which can withstand observed pressures? Any more would be wasteful, right?

They wouldn't use 10x, 100x, 1000x, or even more concrete either. You're basically arguing for "let's use ALL THE FUCKING CONCRETE IN THE WORLD and make it so thick that it becomes the only thing on the Earth." And "robustness"? More ENTERPRISE QUALITY bullshit. Fuck this insane architecture astronautism.

>>977
O RLY? Show proof. Numbers, not vague claims.

Name: Anonymous 2016-04-21 13:06

>>980
>she

Name: Anonymous 2016-04-21 13:06

>>982
You shouldn't blame him, even microcontrollers now have enough leftover flash that most people don't notice that some abstraction alone eats up 1Kb+ of ROM, until they have to write some time-constrained routine.

Name: Anonymous 2016-04-21 13:11

JACKSON 985 GET

Name: Anonymous 2016-04-22 18:23

>>982
Alright, I have no idea what you do or don't do with computers. I have nothing to say against your incoherent ramblings. Go drink a gallon of bleach and make sure your corpse falls to rest on your shitty, power munching old piece of shit computer that can't run programs fast.

You even fail at /prog/, which would be funny if you weren't such an utter waste of life.

Name: Anonymous 2016-04-22 18:28

>>982
I'm surprise you never whine about hardware """bloat""". We've got billions of transistors in CPUs now, which include tons of rewrite registers and out of order processing, complex cache coherence, and all this bullshit taking space & power on a chip.

Shouldn't a simpler chip run faster and cheaper?

The answer is flat out NO. And the same is true for software.

Name: Anonymous 2016-04-23 0:01

>>987
Even ARM is adding all that shit to their CPUs, because they can't get competitively fast with their original Cudder-class designs.

Name: Anonymous 2016-04-23 9:47

>>987
CS freshmen should be forced to write x86 opcode decoder, or even better a simulator, to get the first hand experience on the sheer madness contained therein.

>>988
Calling ARM cudder class is somewhat unfair towards fine lads over at cambridge (try MIPS instead) - considering that the ARM ISA appears to be more or less sane as opposed to x86.

The issue with people like cudder is that they live in alternate reality, thinking that computers are the same 80386 from 30 years ago, and things like out of order, uops and caches are just lies meant to subvert their fragile world of denial.

Name: Anonymous 2016-04-23 10:18

dubs

Name: Anonymous 2016-04-23 13:20

Trips on the way

Name: Anonymous 2016-04-23 13:26

>>989
How many freshman know an HDL?

Name: Anonymous 2016-04-23 15:00

>>992
In software. Full circuit design would truly test their sanity, though.

Name: Anonymous 2016-04-23 16:10

>>991
Trips will be mine

Name: Cudder !cXCudderUE 2016-04-23 16:20

>>987
A CPU is like a library that all software uses. It makes sense to put more functionality there if it reduces the overall size of the system, rather than duplicating it in every single place. Optimisations there also benefit everyone. Look at the OP and the thread title.

Complexity has to be applied at the right level of abstraction.

Name: Anonymous 2016-04-23 18:01

>>8
Fuck off America hater

Name: Anonymous 2016-04-23 20:11

>>996
America is turning into a 3rd world country, soon there will be no more whites left and it will be just a Northern Mexico.

Name: Anonymous 2016-04-23 20:20

>>997
Whites have become the ultimate cucks. They don't reproduce themsleves thanks to the cancerous atheism meme. But they need humans to support their welfare states, so instead of creating new taxpayer by reproduction, they decided to import sandniggers to become new taxpayers without realizing/caring about the long term consequences.

Name: Anonymous 2016-04-23 20:27

>>998
Sandniggers don't pay taxes.

Name: Anonymous 2016-04-23 20:27

This thread has peacefully ended.

Name: Anonymous 2016-04-23 20:36

1001 replies, still no browser from Cudder.