Comments (4)
I have done this, the result is here: seereason@0340f83
I expect to start testing it soon. It replaces the existing default signatures of getCopy and putCopy because they are dangerous. - they simply call the serialization method, no migrations are performed, and any embedded safecopy types are not decoded correctly.
One issue is that the order in which the values are output is different, and I don't really understand the order that the current code is using. I will file an issue about this pointing to the test code included in this patch.
from safecopy.
Ok, I understand it better and I've finished the implementation so it inter operates with the current template haskell instances. Now to take it for a spin.
from safecopy.
Still needs some tweaks.
from safecopy.
Release notes:
-
It should now be possible to replace any use of
$(deriveSafeCopy 3 extension ''Foo)
with a standalone instance such asderiving instance SafeCopy Foo where version = 3; kind = extension
. If version happens to be 1 and kind happens to bebase
you can just addSafeCopy
to thederiving
clause of the type. -
hypothesize (but I haven't yet experienced the situation) where there may be places in existing repositories where the old default putCopy and getCopy functions output something that would not be readable by this new instance. As I say, this hasn't happened to me yet, but if it did it might be fixed with an instance such as
deriving instance SafeCopy Foo where version = 3; kind = extension; getCopy = get; putCopy = put
-
The new instances currently require the type parameters to have a
Typeable
instance. Welcoming suggestions how to avoid this. -
If you see the following it means you have to derive a Generic instance:
• No instance for (safecopy-0.9.5:Data.SafeCopy.SafeCopy.GGetCopy
(GHC.Generics.Rep (ReportMap_4 report))
safecopy-0.9.5:Data.SafeCopy.SafeCopy.DatatypeInfo)
arising from a use of ‘safecopy-0.9.5:Data.SafeCopy.SafeCopy.$dmgetCopy’
from safecopy.
Related Issues (20)
- Can't migrate when you have 2 consecutive fields of the same type and then one of them changes type HOT 2
- Loose time package constraint HOT 1
- Test suite failure with time-1.6.0.1 (duplicate instances) HOT 1
- Unnecessary constraint in generated SafeCopy instance HOT 3
- extended_extension comment is actually the extended_base comment
- s/unkown/unknown/ HOT 1
- Cannot build on ghc 8.2 HOT 1
- template-haskell constraint for ghc-8.4.1 HOT 2
- Better error messages
- errorTypeName method has sensible default implementation HOT 1
- incompatible with GHC 8.6 HOT 4
- safecopy added dependency on generic-data which is only GHC >= 8.0 HOT 6
- Fix compilation with template-haskell-2.15 (GHC-8.8) HOT 4
- Need GGetCopy and GPutCopy instances for V1 HOT 1
- Hello world is not complete HOT 2
- Need changes for GHC-9.0 HOT 3
- PolyKinds breaks phantom newtype deriving with non obvious error message HOT 2
- Support GHC 9.4
- deriveSafeCopy not working for mutual recursive data-types in GHC 9.2.4 HOT 3
- Support GHC 9.6 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from safecopy.