Skip to content

Latest commit

 

History

History
745 lines (546 loc) · 38 KB

2021-09-06.md

File metadata and controls

745 lines (546 loc) · 38 KB

< 2021-09-06 >

2,957,359 events, 1,498,915 push events, 2,264,177 commit messages, 154,760,518 characters

Monday 2021-09-06 00:32:32 by github-actions[bot]

data: auto update [New, 2021-09-05T16:49:53.000Z] Xingqiu Genshin Impact Roblox Background (212883) [Update, 2021-09-05T16:53:15.000Z] TikTok Darkmode+ (201731) [Update, 2021-09-05T17:31:52.000Z] Eldarya Map [05.09] (211673) [New, 2021-09-05T12:52:23.000Z] Aesthetic Anime Girl Background Roblox Theme (212871) [New, 2021-09-05T14:51:11.000Z] fermier (212877) [Update, 2021-09-05T15:46:21.000Z] Pithy TaoBao/Tmall | 简洁 淘宝/天猫 (188502) [New, 2021-09-05T15:53:23.000Z] ROBLOXbackground // A.T.P Engineer (212879) [New, 2021-09-05T20:39:24.000Z] Emily (212911) [New, 2021-09-05T18:43:16.000Z] Dark Material Design (212885) [New, 2021-09-05T19:43:50.000Z] SurmeYT Background OMGGGG (212909) [New, 2021-09-05T22:29:21.000Z] background for robloc for clar (@celiminee) (212912) [Update, 2021-09-05T22:00:25.000Z] Dark Theme for Strava (163813) [Update, 2021-09-05T21:44:39.000Z] UPDATE BC Icon For ROBLOX In 2016 Read Description (198618) [Update, 2021-09-05T18:14:48.000Z] Fritz!Box Dark (FRITZ!OS 7.xx) (164386) [Update, 2021-09-05T19:23:26.000Z] Yahoo Fantasy Dark Night Theme (152103) [New, 2021-09-05T20:07:02.000Z] blog.ir new panel (212908) [Update, 2021-09-05T19:41:34.000Z] Google Darkest Fusion 1/2 (167419) [Update, 2021-09-05T16:21:46.000Z] AbemaTV 一部チャンネルの非表示化他 (134040) [Update, 2021-09-05T19:42:52.000Z] Google Darkest Fusion 2/2 (180430) [New, 2021-09-05T18:41:29.000Z] Roblox Death Note L-Lawliet (212898)


Monday 2021-09-06 03:24:11 by /nick haya

.

eyup. thats right.

FOR TESTING PURPOSES ONLY -- NO TOUCHIE

  • Random Ass: HOLY SHI-
  • Better camera skewing
  • fix sustains when changing speed
  • unused shit that ill do later
  • uuuuuuuuuuuuuuuuuuuuh

Monday 2021-09-06 04:19:20 by Project Nayuki

Updated mostly HTML code to change the space between a number and unit to be non-breaking, but tweaked a few miscellaneous things too, on 44 pages: "AVL tree list", "Band-limited square waves", "Benchmark of Nayuki's FLAC encoder", "Bitcoin cryptography library", "Compact hash map (Java)", "Computing Wikipedia's internal PageRanks", "Cryptographic primitives in plain Python", "DEFLATE library (Java)", "Designing better file organization around tags, not hierarchies", "Dvorak keyboard in use warning sign", "Fast Fibonacci algorithms", "Fast Fourier transform in x86 assembly", "Fast MD5 hash implementation in x86 assembly", "Fast QR Code generator library", "Fast SHA-1 hash implementation in x86 assembly", "Fast SHA-2 hashes in x86 assembly", "Fast Whirlpool hash in x86 assembly", "Frog Fractions guide", "Full transcription of Ichigo Mashimaro - Main Theme", "GO Train acceleration analyzed by video", "Huffman-coding English words", "Karatsuba multiplication", "MamIRC, the headless IRC client", "Native hash functions for Java", "NetPerSec (Nayuki's version)", "Optimizing brainfuck compiler", "Pervasive Displays e-paper panel hardware driver", "QR Code generator library", "RC4 cipher in x86 assembly", "Self-encrypted cache structure", "Sister Princess Winamp skins", "Subtle ways to lose data", "Tablet desk clock", "The photographic exposure equation", "Transcription of Chasse - Instrumental solo", "Transcription of Crystal Energy - Guitar solo", "Transcription of Every Day", "Transcription of Hare Tokidoki Egao", "Transcription of Kana's Theme", "Transcription of Miracle Hinacle", "Transcription of Nyanyanyanyanyanyanya!", "Transcription of o-Hanabatake", "Transcription of Pokemon Game Boy music", "Web site notes", "Windows timestamp accessor library".


Monday 2021-09-06 04:47:41 by Metamaniac

ACTUALLY fix the UI alignment issue

and a BUNCH OF OTHER UI SHIT IS NOW PROPERLY ZERO-ALIGNED AND EASIER TO MANAGE BUT NOT WITHOUT MUCH DIFFICULTY AND OH MY GOD I FUCKING HATE NESTED PREFABS

hi


Monday 2021-09-06 04:53:43 by Shiranui-Izayoi

Emergancy Fix for the face paint (#2901)

  • Work

Made a new item to allow people to "change" their skin colour. I have used the base mask from the Kirgumi mask with Ada's permission.

All coded up and tested all seems to work. I am allowing it to be locked so that others can stop people messing with it if they want to have a different "skin colour".

  • Update Female3DCG.js

  • Update Female3DCG.js

Sorry forgot to put in the nulled block so it doesn't block anything and also reduced the price since it doesn't need to be 50.

  • Moved to Wardrobe Slots

  • Update Female3DCG.csv

  • EMERGANCY FIX

I fixed the floating eyes and also the shitty Cerberus issue

  • Removed

Monday 2021-09-06 08:22:59 by squibbons

Updating to v0.7

Reworked Item Shuffle to allow players more options on what locations they wish to include in the item shuffle. Added 11 new item locations for joinable party members. They can have items in their bag or equipped. Added 3 new Castle chests inside Empath Abbey, Lycaeum, and Sutek's Castle. Added 7 new Dungeon chests inside Deceit, Despise, Destard, Hythloth, Shame, and Wrong / Covetous. Dr. Cat, Papa the Cyclops, and Manrel will all now give item rewards. The sextant has been modified to also show exact coordiantes. A digging spot requiring the shovel and a fishing spot requiring the fishing rod have been added to the item locations. Updated the Location Tracker to reflect the Item Shuffle changes. Added Randomize Player Start option which selects other possible positions to spawn in the world at the start of the game. Adjusted Death Respawn and Help respawn positions to match the randomized player start position if it was chosen to be randomized. Set Text Speed selection in main menu to fastest by default. Added Skip Intro Cinematic option which will skip the cinematic when starting a new game. Added Shuffle, Randomize, and Remove music options on the post-generation screen. Fixed a vanilla game bug where the schedules for multi-day scheduled AI would become corrupted after a few days in game time. Fixed a vanilla game bug where the first schedule entry for Zoltan was corrupted and would result in them eventually spawning in the void. Adjusted some AI schedules to make for a better experience. Added option to randomize Moon Orb destinations by choosing from a list of possible locations, which includes new destination locations. Added Moon Orb Destinations list to the downloadable spoiler log if the Moon Orb destinations are randomized.


Monday 2021-09-06 08:53:24 by TobsSam

Basic inventory system started. Fuckt his stupid piece of shit


Monday 2021-09-06 09:35:54 by drbaggy

I think there is a bit of nasty code to add to "nth-ugly" to speed this up - which remembers where to start the inner for loops - but need to get my brain around it - at least this works - and is better than a full scan of 1..N as n gets larger


Monday 2021-09-06 09:49:27 by Cptn. Dynamite Fabulous

Update 06/09/2021: Implementing ragdoll physics, optimising horrible lag spikes, weapon holding positions

Fully created ragdoll for placeholder soldier model! Hooray! The joints seem to be a bit too loose, with certain joints on the model bending in ways they shouldn’t realistically be able to, but it works well enough that I have more important things to focus on. Attempted to implement ragdoll to my enemies so it would actually be used in gameplay. I created a Die() function in the enemy’s AI script, that disables all their behaviours and other required components. I then added that to the OnDeath() event in the enemy’s health script, as well as functions for disabling their animation handler and enabling the ragdoll. Now, instead of disappearing upon death, the enemy will flop to the ground as a corpse. This is a massive improvement for realism and presentation, whereas formerly the enemies would simply disappear when killed.

However, it has been a while since I attempted to properly playtest my levels, and while testing the ragdoll functionality I have become highly aware of drastic performance dips while playing, even on my reasonably powerful computer. After learning some tips on using the Profiler from some helpful people in a Discord chat room, I found the code was predictably coming from my AI script’s Update() function, specifically from the garbage collector. A lot of data was being produced, clogging up memory, meaning that a lot of processing time was spent removing it each frame. Since that much garbage will exist as a result of things being created and abandoned, I tried looking through the function to find all instances of new data instances being created. One thing I noticed was the property for reference and combine the hitboxes of the enemy and target. I realised this was causing a massive amount of superfluous data, as every time it was called it was creating a new array and using for loops to run through functions to populate it. While I’m not entirely sure this was the cause of the performance slowdown, I now knew a good place to start, by optimising the function to work in a more optimised manner.

I also did a small amount of work on having actual weapon models for guns. I was worrying earlier about how to have unique holding positions for each weapon, when I wanted the model and collider to be where the actual transform axis is so when they’re dropped they can be moved about easily. But I realised that I can still do that by having the separate transform exist as a data reference, but having the weapon model simply switch between its origin and the holding position when dropped/picked up. I will need to eventually bite the bullet and actually test these.


Monday 2021-09-06 10:03:53 by kiara101

6 Outfits to impress your crush

Impress your crush and also make her fall for you, with the outfits mentioned here. Having a crush is one of the best feelings one can experience. When you see her walking somewhere around you and can’t help yourself but blush and admire her beauty or how well she carries her outfit. You can’t help, but daydream that one day she’ll be yours. Why dream? Make your crush notice you and fall for you the same way you did. The outfit which you wear decides you’ll get to meet her next time or not. The best way to make her fall for you is to spice your look a bit more. A great outfit can make your work easier.

So, get amazing outfit ideas at https://classicpolos.com/


Monday 2021-09-06 10:14:53 by Marko Grdinić

"8:20am. I am up. Any mail? SO spam to a place I got a reject from. Well, I might try applying again with an adjusted resume. But forget all this. Applications take a lot of mental energy that I could be using to do programming. Today I have to deal with the Julia manual. I'll only start feeling safe once I've done that and gotten a grasp on the Omega library.

8:35am. Let me chill a little and then I will start.

Sigh, only one thing really matters here - can I finally figure out how to make the poker agent efficiently or not. NNs were my only choice to scale, and now that they failed, I am just an ordinary programmer again.

9:05am. One more chapter of Scarlet and then I will start.

It is really rough to constantly go from failure for failure, but that is my lot in life. Just think how great it would have been had I the skills to create the agent from the start. The only reason why I am in this situation where I had to hustle for paid work is because my skills are insufficient to do what I really want.

I need to build them up. I'll thoroughly go through the domain of probabilistic programming. I'll take what Zenna said at face value and suppress my skepticism. I simply have nothing better to do.

9:15am. I've wasted some time so my soul feels at ease now. Let me start the study session for today. It is time to deal with the manual.

https://docs.julialang.org/en/v1/manual/constructors/

Let me resume from the start of this chapter. Let me just keep going. I do not have any concrete ideas on how PPLs could help me in my quest, but maybe if I keep going I'll come to a conclussion.

9:50am. https://docs.julialang.org/en/v1/manual/conversion-and-promotion/

The previous chapter was pretty light, and I've started skimming things. I think I have a decent grasp on Julia by now.

9:55am. Ok, let me continue. At this rate I'll be able to do it quickly enough.

Explicit conversion everywhere is so inconvenient

That is bullshit. Though I understand why it would be different for numerical computation.

10:25am.

Also note that one does not need to define both promote_rule(::Type{A}, ::Type{B}) and promote_rule(::Type{B}, ::Type{A}) – the symmetry is implied by the way promote_rule is used in the promotion process.

Hmmm, how do they attain this?

function promote_type(::Type{T}, ::Type{S}) where {T,S}
    @_inline_meta
    # Try promote_rule in both orders. Typically only one is defined,
    # and there is a fallback returning Bottom below, so the common case is
    #   promote_type(T, S) =>
    #   promote_result(T, S, result, Bottom) =>
    #   typejoin(result, Bottom) => result
    promote_result(T, S, promote_rule(T,S), promote_rule(S,T))
end

This is from Julia's source. So they attain this effect using the Bottom type. I see, I see.

10:30am. https://docs.julialang.org/en/v1/manual/interfaces/

Thankfully the previous two chapters were short.

10:40am.

///

While we can rely upon generic implementations, we can also extend specific methods where we know there is a simpler algorithm. For example, there's a formula to compute the sum of squares, so we can override the generic iterative version with a more performant solution:

julia> Base.sum(S::Squares) = (n = S.count; return n*(n+1)*(2n+1)÷6)

julia> sum(Squares(1803))
1955361914

///

Honestly, I like this. I feel bad about so hard on Julia in the past.

11:05am. Focus me. I am in the middle of the Interfaces chapter and getting distracted with lurking the Sotsu thread.

I can do this. There is not much more hard stuff left.

11:25am. https://docs.julialang.org/en/v1/manual/interfaces/#Selecting-an-appropriate-output-array

I am getting really lost in thoughts due to boredom. I get the sense for these interfaces. Let me just skim the broadcast part. It is time to start pulling out that move.

https://docs.julialang.org/en/v1/manual/modules/

The next are modules.

I am looking ahead and the Metaprogramming section sure is huge. But I should be able to finish it all today.

12:05pm. https://docs.julialang.org/en/v1/manual/documentation/

Let me stop here. So using is like import except it imports the export statement as well. And I see what prefix periods are in module names.

12:10pm. Right now I only have about 4 chapters that I need to go through left, and I've already thoroughly absorbed the basics of the language. The rest of the chapters I'll just skim in half an hour. After that I'll figure out how to make my own packages and how to step through the code with a debugger. I'll want to understand this in order to take Omega apart.

After that I'll be able to begin properly studying it. I want to attain a very solid grasp of it by the end of the month, enough that I would be able to make my own PPL using it as a reference should I want to."


Monday 2021-09-06 12:25:41 by Peter Zijlstra

sched/core: Fix ttwu() race

Paul reported rcutorture occasionally hitting a NULL deref:

sched_ttwu_pending() ttwu_do_wakeup() check_preempt_curr() := check_preempt_wakeup() find_matching_se() is_same_group() if (se->cfs_rq == pse->cfs_rq) <-- BOOM

Debugging showed that this only appears to happen when we take the new code-path from commit:

2ebb17717550 ("sched/core: Offload wakee task activation if it the wakee is descheduling")

and only when @cpu == smp_processor_id(). Something which should not be possible, because p->on_cpu can only be true for remote tasks. Similarly, without the new code-path from commit:

c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu")

this would've unconditionally hit:

smp_cond_load_acquire(&p->on_cpu, !VAL);

and if: 'cpu == smp_processor_id() && p->on_cpu' is possible, this would result in an instant live-lock (with IRQs disabled), something that hasn't been reported.

The NULL deref can be explained however if the task_cpu(p) load at the beginning of try_to_wake_up() returns an old value, and this old value happens to be smp_processor_id(). Further assume that the p->on_cpu load accurately returns 1, it really is still running, just not here.

Then, when we enqueue the task locally, we can crash in exactly the observed manner because p->se.cfs_rq != rq->cfs_rq, because p's cfs_rq is from the wrong CPU, therefore we'll iterate into the non-existant parents and NULL deref.

The closest semi-plausible scenario I've managed to contrive is somewhat elaborate (then again, actual reproduction takes many CPU hours of rcutorture, so it can't be anything obvious):

				X->cpu = 1
				rq(1)->curr = X

CPU0				CPU1				CPU2

				// switch away from X
				LOCK rq(1)->lock
				smp_mb__after_spinlock
				dequeue_task(X)
				  X->on_rq = 9
				switch_to(Z)
				  X->on_cpu = 0
				UNLOCK rq(1)->lock

								// migrate X to cpu 0
								LOCK rq(1)->lock
								dequeue_task(X)
								set_task_cpu(X, 0)
								  X->cpu = 0
								UNLOCK rq(1)->lock

								LOCK rq(0)->lock
								enqueue_task(X)
								  X->on_rq = 1
								UNLOCK rq(0)->lock

// switch to X
LOCK rq(0)->lock
smp_mb__after_spinlock
switch_to(X)
  X->on_cpu = 1
UNLOCK rq(0)->lock

// X goes sleep
X->state = TASK_UNINTERRUPTIBLE
smp_mb();			// wake X
				ttwu()
				  LOCK X->pi_lock
				  smp_mb__after_spinlock

				  if (p->state)

				  cpu = X->cpu; // =? 1

				  smp_rmb()

// X calls schedule()
LOCK rq(0)->lock
smp_mb__after_spinlock
dequeue_task(X)
  X->on_rq = 0

				  if (p->on_rq)

				  smp_rmb();

				  if (p->on_cpu && ttwu_queue_wakelist(..)) [*]

				  smp_cond_load_acquire(&p->on_cpu, !VAL)

				  cpu = select_task_rq(X, X->wake_cpu, ...)
				  if (X->cpu != cpu)
switch_to(Y)
  X->on_cpu = 0
UNLOCK rq(0)->lock

However I'm having trouble convincing myself that's actually possible on x86_64 -- after all, every LOCK implies an smp_mb() there, so if ttwu observes ->state != RUNNING, it must also observe ->cpu != 1.

(Most of the previous ttwu() races were found on very large PowerPC)

Nevertheless, this fully explains the observed failure case.

Fix it by ordering the task_cpu(p) load after the p->on_cpu load, which is easy since nothing actually uses @cpu before this.

Fixes: c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu") Reported-by: Paul E. McKenney [email protected] Tested-by: Paul E. McKenney [email protected] Signed-off-by: Peter Zijlstra (Intel) [email protected] Signed-off-by: Ingo Molnar [email protected] Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Adam W. Willis [email protected]


Monday 2021-09-06 13:05:00 by Manuel VACELET

Clean-up of PossibleParentSelector event handling

/!\ I really hope I got this right, tough review /!\

The initial purpose of this commit was to add tests on the rendering of the PossibleParentSelector. While doing that, I had to investigate the various behavious, esp in the most legacy part of that: AgileDashboard.

In ArtifactParentsSelectorEventListener the logic is thrown in two cases:

  1. If there is a child_milestone parameter
  2. If the param func is equals to new-artifact-link

As far as I can tell, there is no longer any code that produce child_milestone parameter. From my various digging into the code, it seems to be a remaining part of the Planning v1 when stuff was created in Tracker and we had redirect between agiledashboard and tracker for creation. As now everything is handled by the Planning v2 or Taskboard app the related logic is no longer needed.

For new-artifact-link, again AFAICT, it seems to only kick when someone is creating a new artifact from the Artifact view (aka lightwindow modal). More specifically, when one tries to create a new User Story from an Epic artifact, instead of having the parent selector, the interface displays "Will have $EPIC_TITLE as parent".

However this behavior is already broken because, on master, $EPIC_TITLE doesnt magically end-up being the parent (probably due to the removal of the magic of Tracker hierarchy earlier this year). If you don't set the artifact link type at creation, the user story doesn't end up being a child.

As the original use case no longer seems called and the only one that is not dead code no longer actually works, I decided to remove the entire code.

PS: 👋 to you form the 🛡️ who is gonna read this commit message after hours of painful debug and back & forth exchanges in the tracker for an obscure behaviour that caused a REGERESSION! I really meant what I wrote here, it really seems that this code no longer do anything useful. I appologize in advance.

Part of story #22681 select a parent from Program for my features/enablers

Change-Id: I0109bea663a44a53e1ed7b94eb2b1dc7a0f60b72


Monday 2021-09-06 14:03:21 by ZK108VM

Changes to be committed: modified: Makefile modified: user/find.c new file: user/xargs.c

xargs utility finally worked, after a frustrating debugging...HOLY SHIT!


Monday 2021-09-06 16:37:51 by Marko Grdinić

"12:55pm. Time for toast.

What I am doing now is actually a fairly good idea in fact. If I want to work at Google for example, finding some project they are working on and contributing to it would be a good way putting my foot in the door. So I should not consider the time working on Omega instead of applying at places wasted.

1:30pm. Let me chill just a bit more and then I will resume. I want to deal with the Julia docs today.

https://towardsdatascience.com/why-you-shouldnt-use-reinforcement-learning-163bae193da8

This was posted recently on the RL sub. My comment: I do not actually think there is a way of fixing RL. I need a new framework completely.

2:15pm. Let me start.

https://docs.julialang.org/en/v1/manual/documentation/

I'll finish the docs today and move on to more interesting things. Zenna's repos are a big puzzle box and I should get familiar with it inside and out. Maybe at the end of all of that I'll get some inspiration for how poker agents should actually be done in a way that is scalable.

2:45pm. Done with the documentation chapter.

https://docs.julialang.org/en/v1/manual/metaprogramming/

Now it is finally time for this.

3pm. https://docs.julialang.org/en/v1/manual/metaprogramming/#Quoting

Yeah, this is Lispy stuff.

4:35pm. https://docs.julialang.org/en/v1/manual/arrays/

Done with the metaprogramming section. I do not entirely get generated functions, but that does not matter too much.

4:40pm. At this point I think I've covered all the major aspects of the language. It is time to start cleaning up. Tomorrow, I will be able to start programming.

4:55pm. Let me take a short break here. The Baki thread is killing me.

6:15pm. Focus me, I am almost done with the arrays chapter. I admit I've started reading /g/ threads on the side instead.

6:20pm. https://docs.julialang.org/en/v1/manual/missing/

Sigh, let me go through this quickly and I will call it a day. Surprisingly no mail whatsever. Will something come out of those Tessian and Green Hills threads at this rate? Probably not. How abominable of them making me waste my time doing the tests.

I am definitely better off going with my become-a-PPL expert plan than doing any more job applications.

Since the selection process is lottery it is basically impossible to get what I want. At best I'd get the most generic job imaginable. Subjecting myself to those conditions would definitely kill my ML skill improvement plans and waste my time with drudge work. Here everything I do will be meaningful towards both convincing Zenna to send paid work my way, and having me build the kinds of skills I need to eventually cause the Singularity. It is killing two birds with one stone.

6:30pm. https://docs.julialang.org/en/v1/manual/networking-and-streams/

Let me stop here. The missing values chapter was definitely an optional thing, and so will be these. I'll finish the manual tomorrow and get cracking after that."


Monday 2021-09-06 16:47:45 by koutsie

i fucking hate javascript, this shit should be burned to the ground

holy fucking shit i hate javascript but here it fucking is; cookie based modal ask thingie. fuck you javascript, you're not supposed to exists. stop this shit please, its like cancer. stop it. stop using it. its shit.


Monday 2021-09-06 17:26:27 by K-a-t-z

added prizes to Ideas Elite page

We, Shrujan, Pranav, Yaswanthi and @Shantu0438 edited Ideas Elite webpage and added the prize details using col-md and col-lg. We used col-12 col-md-6 and col-lg-4 so that it looks good on phone as well. It was a wonderfully amazing experience. Thank You Pranav for teaching us what col-md and col-lg is. Belated Happy Teacher's Day Pranav !!! 🥳🥳🥳


Monday 2021-09-06 18:37:06 by Billy Einkamerer

Created Text For URL [www.iol.co.za/news/south-africa/north-west/mother-reports-son-to-cops-after-he-confesses-to-killing-his-girlfriend-leaving-the-body-in-a-bush-958d1608-9359-4afa-8009-b6ebf0bd2143]


Monday 2021-09-06 19:00:00 by Firehawke

First pass at Apple IIgs software list overhaul (#8120)

New working software list additions (apple2gs_flop_orig.xml)

Balance of Power: The 1990 Edition (IIgs) [4am, Firehawke] Bridge 6.0 (Version 2.49B) (IIgs) [4am, Firehawke] Questron II (Version 1.1) (IIgs) [4am, Firehawke] Reach for the Stars (IIgs) [4am, Firehawke] Roadwar 2000 (IIgs) [4am, Firehawke] Superstar Ice Hockey (IIgs) [4am, Firehawke] Life and Death (IIgs) [4am, Firehawke] Tetris (IIgs) [4am, Firehawke] LaserForce (IIgs) [4am, Firehawke] Arkanoid II: Revenge of Doh (IIgs) [4am, Firehawke] Bubble Ghost (IIgs) [4am, Firehawke] Déjà Vu (IIgs) [4am, Firehawke] Hacker II (IIgs) [4am, Firehawke] Destroyer (IIgs) [4am, Firehawke] GBA Championship Basketball (IIgs) [4am, Firehawke] Jigsaw (IIgs) [4am, Firehawke] Mini-Putt (IIgs) [4am, Firehawke] Omega (IIgs) [4am, Firehawke] Photonix (Version 1.46) (IIgs) [4am, Firehawke] Silpheed (IIgs) [4am, Firehawke] Space Quest (IIgs) [4am, Firehawke] The Third Courier (IIgs) [4am, Firehawke] War in Middle Earth (IIgs) [4am, Firehawke] Where in the World is Carmen Sandiego? (IIgs) [4am, Firehawke] Windwalker (IIgs) [4am, Firehawke] Warlock (IIgs) [4am, Firehawke] Winter Games (IIgs) [4am, Firehawke] Shanghai (IIgs) [4am, Firehawke] Police Quest (IIgs) [4am, Firehawke] Dragon Wars (IIgs) [4am, Firehawke] Monte Carlo (IIgs) [4am, Firehawke] Sub Battle Simulator (IIgs) [4am, Firehawke] John Elway's Quarterback (IIgs) [4am, Firehawke] Space Quest II (IIgs) [4am, Firehawke] King's Quest III (IIgs) [4am, Firehawke] Great Western Shootout (IIgs) [4am, Firehawke] Leisure Suit Larry in the Land of the Lounge Lizards (IIgs) [4am, Firehawke] The Black Cauldron (IIgs) [4am, Firehawke] The King of Chicago (IIgs) [4am, Firehawke] King's Quest IV: The Perils of Rosella (IIgs) [4am, Firehawke]

  • New working software list additions (apple2gs_flop_orig.xml)

Mean 18 [4am, Firehawke] Hover Blade [4am, Firehawke] Fast Break [4am, Firehawke] Halls of Montezuma [4am, Firehawke] Star Saga: Two - The Clathran Menace [4am, Firehawke] Club Backgammon [4am, Firehawke] Beyond Zork: The Coconut of Quendor (Revision 57 / 871221) [4am, Firehawke] 2088: The Cryllan Mission - The Second Scenario [4am, Firehawke] Defender of the Crown [4am, Firehawke] Skate or Die [4am, Firehawke] Street Sports Soccer [4am, Firehawke] Out of this World [4am, Firehawke] Thexder (Version 2.7) [4am, Firehawke] Tunnels of Armageddon (Version 1.0) [4am, Firehawke]


Monday 2021-09-06 19:59:41 by George Spelvin

lib/sort: make swap functions more generic

Patch series "lib/sort & lib/list_sort: faster and smaller", v2.

Because CONFIG_RETPOLINE has made indirect calls much more expensive, I thought I'd try to reduce the number made by the library sort functions.

The first three patches apply to lib/sort.c.

Patch #1 is a simple optimization. The built-in swap has special cases for aligned 4- and 8-byte objects. But those are almost never used; most calls to sort() work on larger structures, which fall back to the byte-at-a-time loop. This generalizes them to aligned multiples of 4 and 8 bytes. (If nothing else, it saves an awful lot of energy by not thrashing the store buffers as much.)

Patch #2 grabs a juicy piece of low-hanging fruit. I agree that nice simple solid heapsort is preferable to more complex algorithms (sorry, Andrey), but it's possible to implement heapsort with far fewer comparisons (50% asymptotically, 25-40% reduction for realistic sizes) than the way it's been done up to now. And with some care, the code ends up smaller, as well. This is the "big win" patch.

Patch #3 adds the same sort of indirect call bypass that has been added to the net code of late. The great majority of the callers use the builtin swap functions, so replace the indirect call to sort_func with a (highly preditable) series of if() statements. Rather surprisingly, this decreased code size, as the swap functions were inlined and their prologue & epilogue code eliminated.

lib/list_sort.c is a bit trickier, as merge sort is already close to optimal, and we don't want to introduce triumphs of theory over practicality like the Ford-Johnson merge-insertion sort.

Patch #4, without changing the algorithm, chops 32% off the code size and removes the part[MAX_LIST_LENGTH+1] pointer array (and the corresponding upper limit on efficiently sortable input size).

Patch #5 improves the algorithm. The previous code is already optimal for power-of-two (or slightly smaller) size inputs, but when the input size is just over a power of 2, there's a very unbalanced final merge.

There are, in the literature, several algorithms which solve this, but they all depend on the "breadth-first" merge order which was replaced by commit 835cc0c8477f with a more cache-friendly "depth-first" order. Some hard thinking came up with a depth-first algorithm which defers merges as little as possible while avoiding bad merges. This saves 0.2*n compares, averaged over all sizes.

The code size increase is minimal (64 bytes on x86-64, reducing the net savings to 26%), but the comments expanded significantly to document the clever algorithm.

TESTING NOTES: I have some ugly user-space benchmarking code which I used for testing before moving this code into the kernel. Shout if you want a copy.

I'm running this code right now, with CONFIG_TEST_SORT and CONFIG_TEST_LIST_SORT, but I confess I haven't rebooted since the last round of minor edits to quell checkpatch. I figure there will be at least one round of comments and final testing.

This patch (of 5):

Rather than having special-case swap functions for 4- and 8-byte objects, special-case aligned multiples of 4 or 8 bytes. This speeds up most users of sort() by avoiding fallback to the byte copy loop.

Despite what ca96ab859ab4 ("lib/sort: Add 64 bit swap function") claims, very few users of sort() sort pointers (or pointer-sized objects); most sort structures containing at least two words. (E.g. drivers/acpi/fan.c:acpi_fan_get_fps() sorts an array of 40-byte struct acpi_fan_fps.)

The functions also got renamed to reflect the fact that they support multiple words. In the great tradition of bikeshedding, the names were by far the most contentious issue during review of this patch series.

x86-64 code size 872 -> 886 bytes (+14)

With feedback from Andy Shevchenko, Rasmus Villemoes and Geert Uytterhoeven.

Link: http://lkml.kernel.org/r/f24f932df3a7fa1973c1084154f1cea596bcf341.1552704200.git.lkml@sdf.org Signed-off-by: George Spelvin [email protected] Acked-by: Andrey Abramov [email protected] Acked-by: Rasmus Villemoes [email protected] Reviewed-by: Andy Shevchenko [email protected] Cc: Rasmus Villemoes [email protected] Cc: Geert Uytterhoeven [email protected] Cc: Daniel Wagner [email protected] Cc: Don Mullis [email protected] Cc: Dave Chinner [email protected] Signed-off-by: Andrew Morton [email protected] Signed-off-by: Linus Torvalds [email protected] Signed-off-by: Dede Dindin Qudsy [email protected] Signed-off-by: Vaisakh Murali [email protected]


Monday 2021-09-06 20:51:38 by Qweszaq

Update README.md

will you play? yeah i was wrong about you as well you are sissy little boy like the rest of them what's unfortunate, is my endless trust in cunts like you you are special, as i ruined my team to defend you but you are 17 y/o leecher asian fuck, like them rest so why don't you go fuck off, cunt little piece of shit

mate, i am drunk right now... 600ml whiskey and there are tears on my face because of you i wanted you to know that ;] ok? just know this now i am sitting, crying, thinking of you it should be a special moment because i am a grown-up ass man 31 years old ok? so, maybe you don't respect that maybe one day, after 10 years, you'll understand good luck friend

listen to me mother fucker yes i just drink 700 whiskey, ok? and i am feeling fucking sad, and i am thinking of you and i am fucking crying right now, ok? motherfucker, i am sad! i am sad about you, i am sad about me please acknowledge the love here, and don't trash it, it's more than twrpg

please do what's best for you. It is up to you to decide whether Moldrin's efforts were worth it or not. I can't change your mind. You already have your mind! You asking me whether I will be sad if you leave.... already answers the question. I enjoyed our time together, so much, that i thought we could be gaming friends. if you leave "me", this means that you don't respect me as much as i respect you this can only sadden me and i am kind of crying now because, today i see too much shits that don't deserve my friendship and my love and this makes me sad.... so... i wish you all the best! crow! and all the rest good luck


< 2021-09-06 >