Two instructions are still ordered differently:

Might be related to #19.
This was fixed a few days ago with the convention change.
This was fixed a few days ago with the convention change.
As a lot of functions were affected (it seems to me), how can dev be sure all of those that previously were bin-exact remained the same?
I don't know the developing process exactly, hence this question. Maybe there is some automatic testing used so dev would know when bin-exactness breaks.
@sskras basically the entire application is being dumped and compared against the original binary. Riivaaja/Travis CI calculates the full diff and outputs it in its log and into a discord channel: 11% change, 17416 insertions(+), 15945 deletions(-)
We're pretty cautious when changing stuff that may affect the program as a whole, but for normal cleanups we focus only on the function itself. Usually, only signature changes affect other functions either way.
Once devilution gets close to 0% change we can enable the stricter mode of devilution-comparer that doesn't hide offsets in order to check the positioning of all functions and data in the executable as well. This only works properly if the function lengths are matching already. In this mode however, each and every byte of actually used data in the game has to be at the right place in the binary for the comparer to show 0% change.
Thanks. And:
basically the entire application is being dumped and compared against the original binary.
Do you mean dumped via disassembler? Else it would be hard to compare them.
Riivaaja/Travis CI calculates the full diff and outputs it in its log and into a discord channel:
11% change, 17416 insertions(+), 15945 deletions(-)
We're pretty cautious when changing stuff that may affect the program as a whole, but for normal cleanups we focus only on the function itself. Usually, only signature changes affect other functions either way.
Nice, however I see neither a comparison to the previous revision of Devilution nor a change in the count of bin-exact fns, at least. So mass convention fix/unification patch may have introduced some regression in that regard. No?
Do you mean dumped via disassembler? Else it would be hard to compare them.
This tool does the comparison https://github.com/diasurgical/devilution-comparer. @seritools know more how it works under the hood.
Thank you. I remember this tool and I've subscribed to the repo but I see I stopped receiving mail notifications from it since the late 2018. Damn thing.
Now I get clearer hint of how it works:
https://github.com/diasurgical/devilution-comparer/blob/master/comparer-config.toml
Still I seem to have missed a lot (of potential understanding insights) during that time. Thanks again.
I also generated a full visual diff:

From it you can generally see what parts of the code where affected and how (some aliasing happens since it's not a per line diff).
Note also that the diff will be red if any line in the area covered by the pixel has diff, so in actuality things look better then this.
Eventually we will have to go over all function, but the gradual falling % shows that we are at least more bin exact over all so no major regressions have happened, and in the advent that some functions where negatively affected we know how to correct them specifically.
Impressive pic. Thank you.
Most helpful comment
This was fixed a few days ago with the convention change.