Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds Parallel State Machine Testing #28

Open
wants to merge 31 commits into
base: master
Choose a base branch
from
Open

Conversation

jeffh
Copy link
Owner

@jeffh jeffh commented Jan 10, 2015

Working implementation of #22 (WFM).

@jeffh jeffh mentioned this pull request Feb 4, 2015
3 tasks
jeffh added 29 commits February 3, 2015 23:54
Not for general use. Replicates part of the pthread/POSIX APIs.

Can be replace system apis via mach_override. (Thanks @rentzsch!)
Modified mach_override to remove warnings and work on iOS Simulators.

Overrides:
    - POSIX threads
    - POSIX named semaphores
    - Mach Semaphores
    - OSSpinLock

Fishhook requires covering more APIs than mach_override. But
mach_override probably does not work on actual devices.

Scheduling with manual instrumentation (eg - yields) currently works.

Related #22.
Automatically instruments yield statements into code.

Currently insert yields:

- (c, objc) Before every statement in a C block body.
- (c, objc) Between reads and writes of ++ and -- unary operators.
- (objc) Between a receiver and a message send.
- (objc) Between a receiver and a property access (getters only).
Can potentially be wired to Xcode as a clang replacement.
- Added ability for custom scheduling algorithms.
- Added random scheduling using FOXRandom instead of round robin.
- Converted property rewriter to yield on setters instead of getters.
  Getters were already being yielded by message sends.

Still highly experimental.
Marked existing APIs as deprecated for removal in 2.x.x.
- Removed FOXAlways in parallel tests, since nested properties aren't
  supported yet.
- Added more tests.
- Removed mutation method on FOXRoseTree.
- Documentation comments.
Foxling now uses a public API method instead of the private yielding
one.
To allow travis to build it.
…rAll/FOXForSome via exceptions. This preserves original debuggability while allowing users to add setup/teardown code for the subject.
Reduces some CPU and memory overhead of
 -[FOXSequence sequenceFromArray:]
 -[FOXSequence sequenceByRepeatingObject:times:]

Foxling is more defensive at preserving original source (by saving the original to disk somewhere).
It is expected behavior that FOXBind doesn't shrink to absolute minimal
values when nested.
- generators_reference.rst
    - Expanded warnings of alpha APIs
    - Rewording of warning of FOXSuchThat* functions
    - Elaborated on debugging functions
- index.rst
    - Parallel articles are co-located on the TOC
Experimental FOXSeed shrinking and 'smarter' scheduler algorithms.

Fling doesn't backup file on disk - added too significant performance
lost.

Documentation updates.
Added internal debugging method of repr.

Fixed some warnings.
@jeffh jeffh force-pushed the par-statem-attempt-2 branch from 0022569 to e72fbfb Compare February 4, 2015 08:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant