Show newer

To apply this computed loop order it iterates over the computed order, revalidates the referenced loop extracting it's condition, double checks it's actually profitable to do the swap by checking all the datareferences, & swaps the loop conditions between the existing target loops.

This requires to swap the corresponding the corresponding in the loop indices, & remove the newly-revealed deadcode.

2/2 Fin for today.

Show thread

Sometimes the nesting of loops is inoptimal - we want the innermost loop to iterate more often than the outermost loop. So GCC's `pass_linterchange` figures out when to correct for this.

---

If there's more than two loops in the function it'll iterate over all the innermost loops computing & applying optimal loop nesting.

To compute the nesting it checks if the loop's structured simply enough, doesn't have any data dependencies preventing it, & bubblesorts by known number of iterations.

1/2?

@alcinnz (indeed branch orediction is an attempt at reducing the cost of branches)

@alcinnz branches have a cost on every architecture, even before branch predixtion. loop unrolling is a time honored optimisation

After checking the variables within these innermost loops aren't too interdependant it unrolls the outer loop before attempting to fuse the resulting inner loops. By iterating over those inner loops fixing the PHI instructions, merging the codeblocks for each subsequent loop into the first child.

This necessitates recomputing the loop structure & SSA invariants.

2/2 Soon: loop interchange

Show thread

pandoc-zotxt-bib.pl will go through your Pandoc document, collect your citations, and print an appropriate BibTeX database extracted from Zotero via the zotxt extension

github.com/cadadr/configuratio

Use it as such:

$ pandoc-zotxt-bib.pl TheDocument.markdown > Bibliography.bib

For more info, see the perldoc.

#perl #bibtex #zotero

In my GCC discussions, it looks like I've skipped over a pass which unrolls the outer loop around some innermost loop. Possibly rearranging the execution order back into a single innermost loop if valid. Presumably to minimize how often it has to check & branch predict the loop condition?

---

If there's more than one loop in the function it iterates over all innermost loops looking for ones it can & should optimize. If so it computes the loop's data dependencies for more involved checks.

1/2?

The Tor Project is a 501(c)(3) nonprofit. Every contribution keeps Tor strong. Plus, we accept 10 different cryptocurrencies.
donate.torproject.org/

software politics 

Ultimate Guitar's interface is terrible. It doesn't serve the lyrics and chords directly, but sends some JavaScript that fetches it. It's a broken design and arbitrarily restricts how one can access community-provided chord charts. I'm working on a Python script that scrapes it, but we need a better way for the community to share chord charts. songs.zachdecook.com is very convincing option, and I will be contributing to it. The only problem is that I can't find the source code for the program. Although that's not a big deal as it's easily scrapable and works without JavaScript.

Community-sourced data should belong to the community. It should be easily accessible to anyone who wants to use it, and decisions relating to the data that affect how it can be used should be made by the community. Proprietary control of crowd-sourced data has been used against the community in so many ways in the past, including with MuseScore's sheet music.

#CooperativeTechnology

Our final presentation of Day 1 is Keynote Speaker Shauna Gordon-McKeon. Catch her talk in Track 1!
events.gnome.org/event/9/timet

The Linux Foundation are carrying out a survey on "Diversity, Equity, & Inclusion in Open Source", and I know this is something #foss #freesoftware and #opensource people (and opponents thereof!) on the Fedi have opinions on. So please boost and fill in.

Contributing to an evidence base may be a way of highlighting the problems and shaming people with money into doing something about them.

research.net/r/PZ9J8QN

@alcinnz Thats one of the things I like about irc: just connect and drop into the channel.

Finished implementing cookies in HURL! With strict restrictions: You can only set a cookie in response to a HTTP POST request. Only in response to submitting to certain forms.

This better resembles the intent of the GDPR (or the Cookie Law before it) than how *all* those who wish to villify it chooses to interpret them. Because guess what? I agree with what the EU was trying to achieve there.

O.K., I'm not quite done...

Show thread

Now I've loosened my restrictions a little: HURL will retroactively set cookies upon a POST request, by default from the last non-batched request.

I added this because most webframeworks will set both a cookie & a hidden input to the same value so it can check that the form submission came from the same site. Preventing "Cross-Site Request Forgery" (CSRF).

Rhapsode & Haphaestus meanwhile will inform you of any cross-ite form submissions, so there's less point to this security check.

Show thread

I did the stupidest thing ever lol

I modified my bash prompt so that every time bashrc loads, a random colour is assigned as the prompt's text colour.

bold='\[\033[1m\]'
reset='\[\033[0m\]'

# if xterm, colour
case $TERM in
xterm-*)
color="$(seq 2 8 | shuf -n 1)"
bold='\[\033[01;3'"${color}"'m\]' ;;
* ) ;;
esac

export PS1="${bold}stuff${reset}"

Full prompt here: github.com/cadadr/configuratio

Using object stores and semantic vocabularies efficiently 

Relational databases and current processor architectures grew up together. Multi processing and GPU power is becoming prevalent, but flattening trees (only querying first children in an object store) is still relevant to maintaining performance with current architectures. 

It's also important to check whether the object store in the database engine benefits from a separate index. While you may be able to do ad hoc SQL queries on JSON and JSON-B stores where these have been implemented, e.g. Postgres and SQLite, the first implementations weren't able to optimize queries. In the absence of a native index, or even in the lack of queryable object storage, JSON and other object formats can be refactored as semantic triples and stored in a relational database in two tables - a key-value store to retrieve the object entire and an additional table where sematic triples constitutes composite keys

okay fine this is a hot take 

corporate contributions to open source software are what are killing the commons that was once dotted with freeware and shareware and is now a wretched battleground of licensing attorneys and market share statistics and dev mindshare.

taking money from corps to keep your open source project financially stable is what it is, but if you think for a second that using their sponsored framework or stack in your open source project isn't directly assisting their bottom line you're fooling yourself.

@alcinnz I take the time to tell local businesses who do this "I'm sorry I couldn't read your updates online, I don't use Facebook or Instagram or any of the other platforms who abuse my privacy. Do you have a newsletter?"

How many computers is too many computers to have if you count phones and raspberry pis and VPSes and everything

Show older
FLOSS.social

For people who care about, support, or build Free, Libre, and Open Source Software (FLOSS).