pycow | Copy-on-write for Python
kandi X-RAY | pycow Summary
kandi X-RAY | pycow Summary
pycow is a Python library. pycow has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. However pycow build file is not available. You can download it from GitHub.
Python has support for shallow copying and deep copying functionality via its copy module. However it does not provide for copy-on-write semantics. This project aims to remedy this shortcoming. The need for this sort of a functionality was felt when I was implementing a symbolic execution engine in Python using PyPy (called SyPy). In a symbolic execution engine, the executor conceptually "forks" whenever it hits a decision point in the application. In SyPy, instead of forking, we simply remember the decision point and move back to that point when we are done exploring a given choice in the execution path. However, this also means reverting the heap (object space) to its original state. Creating a separate deep copy of the heap at each fork point is an extremely heavy operation and the need was felt to have some sort of a COW functionality in place. Note that in modern OSes this is automatic. Forking a child process creates a shallow copy of the parent process' memory space which is marked as read only. When the child process attempts to write to the memory space, it triggers a fault that is intercepted by the kernel and recognized as a COW fault. Then the OS creates a fresh copy of the parent's memory space and writes whatever was supposed to have been written to it. The current implementation of pycow supports partial COW as well as general COW functionality. The implementation requires more testing. Proxy versions of lists and dicts have been implemented.
Python has support for shallow copying and deep copying functionality via its copy module. However it does not provide for copy-on-write semantics. This project aims to remedy this shortcoming. The need for this sort of a functionality was felt when I was implementing a symbolic execution engine in Python using PyPy (called SyPy). In a symbolic execution engine, the executor conceptually "forks" whenever it hits a decision point in the application. In SyPy, instead of forking, we simply remember the decision point and move back to that point when we are done exploring a given choice in the execution path. However, this also means reverting the heap (object space) to its original state. Creating a separate deep copy of the heap at each fork point is an extremely heavy operation and the need was felt to have some sort of a COW functionality in place. Note that in modern OSes this is automatic. Forking a child process creates a shallow copy of the parent process' memory space which is marked as read only. When the child process attempts to write to the memory space, it triggers a fault that is intercepted by the kernel and recognized as a COW fault. Then the OS creates a fresh copy of the parent's memory space and writes whatever was supposed to have been written to it. The current implementation of pycow supports partial COW as well as general COW functionality. The implementation requires more testing. Proxy versions of lists and dicts have been implemented.
Support
Quality
Security
License
Reuse
Support
pycow has a low active ecosystem.
It has 40 star(s) with 3 fork(s). There are 1 watchers for this library.
It had no major release in the last 6 months.
There are 2 open issues and 0 have been closed. On average issues are closed in 1877 days. There are no pull requests.
It has a neutral sentiment in the developer community.
The latest version of pycow is current.
Quality
pycow has 0 bugs and 0 code smells.
Security
pycow has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
pycow code analysis shows 0 unresolved vulnerabilities.
There are 0 security hotspots that need review.
License
pycow is licensed under the MIT License. This license is Permissive.
Permissive licenses have the least restrictions, and you can use them in most projects.
Reuse
pycow releases are not available. You will need to build from source code and install.
pycow has no build file. You will be need to create the build yourself to build the component from source.
Installation instructions are not available. Examples and code snippets are available.
Top functions reviewed by kandi - BETA
kandi has reviewed pycow and discovered the below as its top functions. This is intended to give you an instant insight into pycow implemented functionality, and help decide if they suit your requirements.
- Get the attributes of the object .
- Set an attribute on the object .
- Create an instance of the class proxy .
- Create a proxy for the given class .
- Remove an attribute from the object .
- Insert an item at index .
- Remove an item from the queue .
- Append an object to the list .
- Extends the given iterable .
- Clear the object .
Get all kandi verified functions for this library.
pycow Key Features
No Key Features are available at this moment for pycow.
pycow Examples and Code Snippets
No Code Snippets are available at this moment for pycow.
Community Discussions
No Community Discussions are available at this moment for pycow.Refer to stack overflow page for discussions.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install pycow
You can download it from GitHub.
You can use pycow like any standard Python library. You will need to make sure that you have a development environment consisting of a Python distribution including header files, a compiler, pip, and git installed. Make sure that your pip, setuptools, and wheel are up to date. When using pip it is generally recommended to install packages in a virtual environment to avoid changes to the system.
You can use pycow like any standard Python library. You will need to make sure that you have a development environment consisting of a Python distribution including header files, a compiler, pip, and git installed. Make sure that your pip, setuptools, and wheel are up to date. When using pip it is generally recommended to install packages in a virtual environment to avoid changes to the system.
Support
For any new features, suggestions and bugs create an issue on GitHub.
If you have any questions check and ask questions on community page Stack Overflow .
Find more information at:
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page