Entire SysV::Integer code and associated shared libraries #67
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Suggested to code review it horizontally (all the way through for one feature set instead of layer by layer), since it's easier to see the flow of code execution like that, all tests can be introduced, and tests don't fail because relevant code isn't included.
Old massive PR: #54
Small PR 1 (merged): #62
Small PR 2 (with description of code flow, closed): #64
Possibly outstanding issues
do_with_sync
helper + automatic wrapping of methods insynchronize
:y()
inside functionx()
to be safe even ify()
throws errors or exits prematurely at different exit pointsensure
set_value()
,get_value()
accessors, and only protect those, having all mutation functionality for a data structure route through that. But that doesn't work well with something likeSysV::SlidingWindow
, since<<
,shift
,clear
, all set values and mutate. On that line of thinking, the pragmatic way to do that is to provide a[]
and[]=
function. This is bad since (1) it further raises the complexity, you'd have to make sure all functionality route through those functions, (2) we want aSlidingWindow
not anArray
. It is generally safer to sweep across all methods and wrap all of them in one swift go than to pick apart specific ones.ensure
, butC
's ensure syntax is terrible, since it utilizes callback functions in the form ofrb_ensure(body_fn, body_fn_arg, ensure_fn, ensure_fn_arg)
to emulate thebegin; body_code; ensure; ensure_code; end
form of Ruby. Two bad things:body_fn
; Bad for code organization, and duplicate stub code everywheresynchronize { actual_method() }
to wrap every functionalias_method
-chain thing current implementationself
from block calls (wtf)) made this impossibledo_with_sync
) to do the hard part and make it succinct what I didprepend
magic: I tried this, the call torb_call_with_super
always fails for some reason, might be the discrepancy between method definitions and variable argument countsmalloc
is usedensures
causes (1) either stub code everywhere, or (2) forcing code through a limited amount of setters and getters (not scalable and has other issues), or (3 current) slightly awkward method aliasing magic.Check the bottom of the PR #64 's description for an overview of how accessor/setter function and the
acquire
flow works@sirupsen
My god why are these PR descriptions so long