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

v1.0.0.0 planning #392

Closed
18 tasks done
bergmark opened this issue May 6, 2016 · 35 comments
Closed
18 tasks done

v1.0.0.0 planning #392

bergmark opened this issue May 6, 2016 · 35 comments
Milestone

Comments

@bergmark
Copy link
Collaborator

bergmark commented May 6, 2016

in suggested merge order:

Please give feedback if I missed something!

@bergmark bergmark added this to the 0.12 milestone May 6, 2016
@bergmark
Copy link
Collaborator Author

bergmark commented May 7, 2016

@andrewthad @phadej should we start by merging the lifted type classes next?

@andrewthad
Copy link
Contributor

Yeah, I think that that one is the best place to start since it was rebased on top of master like a week ago.

@RyanGlScott
Copy link
Member

We should probably add generics/TH support for the lifted typeclasses to this list. I haven't made an issue for it, since I was hoping it could be a part of #352, but I dropped the ball.

@andrewthad
Copy link
Contributor

@RyanGlScott If I understand correctly, the generics/TH support is a non-breaking change. Even if it were added after the 0.12 release, I think it would only require bumping minor version. If it's something that you can do in under a week, I don't think that anyone would object to you adding it for the 0.12 release though.

@andrewthad
Copy link
Contributor

Also @bergmark, I'd still like to redo the module merge from #375 to eliminate orphan instances. I think that now is probably a good time to do that. Let me know if you agree and I'll do it.

@andrewthad
Copy link
Contributor

Nevermind, I just noticed #412

@andrewthad
Copy link
Contributor

Down to one final checkbox. I'll add the docs for using ToJSONKey and friends.

@bergmark
Copy link
Collaborator Author

bergmark commented Jun 7, 2016

before i added another one ;-) But thanks!

I'll do the changelog later.

@phadej
Copy link
Collaborator

phadej commented Jun 7, 2016

I'd like to finalise my Encoding related refactoring and write tests to lifted typeclasses and their generic/th derivations

@phadej
Copy link
Collaborator

phadej commented Jun 7, 2016

Few more points:

write Key instance to at least numeric and datetime types, then the ones I'd personally need would be covered. I can do it while making Encoding related refactorings, as they would be easy to add next to ToJSON and FromJSON instances.

I'd like to see what needed to be exported to write instance for InsOrdHashMap using new aeson's ToJSONKey and FromJSONKey functionality

@bergmark
Copy link
Collaborator Author

bergmark commented Jun 8, 2016

@andrewthad Did you consider error messages for FromJSONKey? I suppose this wasn't needed before. It would be super nice if we had JSONPath error messages here as well

@andrewthad
Copy link
Contributor

I hadn't considered that. I haven't really worked with the JSONPath parts of aeson before, so I don't know how they work. Currently, we can get errors like this:

>>> eitherDecode "{\"hey\": {\"foo\": \"not_number\"}}" :: Either String (M.Map Text (M.Map Text Int))
Left "Error in $.hey.foo: expected Int, encountered String"

Which is good. If we instead expect an Int key, we get:

>>> eitherDecode "{\"hey\": {\"foo\": \"ht\"}}" :: Either String (M.Map Text (M.Map Int Int))
Left "Error in $.hey: input does not start with a digit"

What error would we expect instead?

@phadej
Copy link
Collaborator

phadej commented Jun 8, 2016

@andrewthad @bergmark #423

@phadej
Copy link
Collaborator

phadej commented Jun 9, 2016

Bikeshedding: should 0.12 be actually 1. There are so many changes which even are kind-of backwards compatible but not really.

@andrewthad
Copy link
Contributor

I actually had the same thought yesterday. Even though the changes in this release probably cause very little breakage, they are some pretty substantial changes. Much bigger than anything that's happened since at least as far back as the 0.6 release. I think calling it a 1.0 release would be appropriate.

@tolysz
Copy link
Contributor

tolysz commented Jun 9, 2016

The new trend would be to call it 2016.0

@bergmark
Copy link
Collaborator Author

bergmark commented Jun 9, 2016

Sure v1 sounds good.

@bergmark bergmark changed the title v0.12 planning v1.0.0.0 planning Jun 9, 2016
@andrewthad
Copy link
Contributor

Just put up some improved docs for FromJSONKey: #428

@phadej
Copy link
Collaborator

phadej commented Jun 14, 2016

tried to port insert-ordered-containers: seems to work, yet we have less helpers for building Values then Encodings https://github.com/phadej/insert-ordered-containers/pull/5/files

@phadej
Copy link
Collaborator

phadej commented Jul 3, 2016

Should #437 be added to the list?

@phadej
Copy link
Collaborator

phadej commented Jul 4, 2016

Recently added TODOs:

  • toJSONKeyTextEnc :: (a -> Encoding' Text) -> ToJSONKeyFunction a (analogue to toJsonKeyText) should this be exported?
  • also toJSONKeyTextEnc: dropAround is also used in stringEncoding, which is unfortunate atm. I don't have any idea how fix this without breaking changes. But I don't think it's very important.
  • Builder.hs: Extend documentation with references to source code in blaze-html or aeson that uses this function. @RyanGlScott ?
  • TODOs for Do not truncate Integral values #317

@RyanGlScott
Copy link
Member

@phadej That comment was copied wholesale from text, so it wasn't meant to reflect something that actually needed to be done in aeson. It can be removed if you desire.

@phadej
Copy link
Collaborator

phadej commented Jul 25, 2016

Write tests for lifted typeclasses and their generic/th derivations is done by #439.

Is there something we can help to make aeson-1.0.0.0 land on Hackage?

@bergmark
Copy link
Collaborator Author

I'm planning to sit down this weekend and see if I can more stuff ready.

@bergmark
Copy link
Collaborator Author

bergmark commented Jul 30, 2016

@phadej I'm looking at the new Encoding modules. For example (><) and (>*<) are only exported from the internal module. Are they redundant when writing instances?

@phadej
Copy link
Collaborator

phadej commented Jul 30, 2016

Yes, they are. They are used to implement high-level combinators.

@bergmark
Copy link
Collaborator Author

Does it then make sense to not export those at all and change all instances to only use the public API?

@phadej
Copy link
Collaborator

phadej commented Jul 30, 2016

@bergmark IIRC template haskell derivation uses them. It can be changes not to use them, but i'm not sure it's worth the effort atm.

@bergmark
Copy link
Collaborator Author

A lot of code uses the internals.

$ git grep '>\*<' Data/Aeson/Types/ToJSON.hs  | wc -l
     110

I imagine that people will look at existing instances for inspiration so it'd be nice to show how the library is supposed to be used there.

@phadej
Copy link
Collaborator

phadej commented Jul 30, 2016

@bergmark those are the tuples, aren't they?

@phadej
Copy link
Collaborator

phadej commented Jul 30, 2016

Could be "easily" redone, as code is generated...

@bergmark
Copy link
Collaborator Author

yeah i'm working on it

@winterland1989
Copy link
Contributor

winterland1989 commented Aug 6, 2016

@bergmark I can provide benchmark result, just let me know which benchmark you wanna run, i'll try to give it a go. The result for benchmarks in master has already upload in #452 .

The c code is not so easily ported to haskell though, it's similar to the decoding part in @text@, looping into a CString is tricky in haskell.

@phadej
Copy link
Collaborator

phadej commented Aug 6, 2016

@bergmark note the QuickCheck pull requests. IMHO it makes sense to bump bounds for aeson-0.11 also.

Would help migrating...

@phadej
Copy link
Collaborator

phadej commented Aug 7, 2016

Great, thanks for the release!

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

No branches or pull requests

6 participants