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

1.0 Release Features #101

Open
4 of 5 tasks
timbod7 opened this issue Jul 15, 2020 · 15 comments
Open
4 of 5 tasks

1.0 Release Features #101

timbod7 opened this issue Jul 15, 2020 · 15 comments

Comments

@timbod7
Copy link
Collaborator

timbod7 commented Jul 15, 2020

ADL has been actively used in a range of projects for more than 4 years. It's worked well, though usage has suggested some improvements that are difficult to make in a backwards compatible fashion. Hence it is proposed that these changes be made on the master branch leading to a 1.0 release. In the meantime, bug fixes to exist releases can be made on a release-0.x branch.

Proposed 1.0 features include:

  • rename Void primitive to Unit
  • Address issues with Unit type in java (Rethink Void binding in java. #56)
  • Change sys.types.Map serialization to a list of map entries (not pairs)
  • Fix java builders to avoid runtime errors on incomplete construction
  • Make enums in typescript be type level strings

Feel free to propose other changes in the thread.

@timbod7
Copy link
Collaborator Author

timbod7 commented Jul 15, 2020

  • Remove Error<T> type from sys.types (it's been replaced with Result<T,E>).

@gmhta
Copy link
Contributor

gmhta commented Jul 16, 2020

  • packaging system.

@timbod7
Copy link
Collaborator Author

timbod7 commented Jul 16, 2020

packaging system

Interesting! Need's some thought and discussion...

@gmhta
Copy link
Contributor

gmhta commented Jul 16, 2020

  • lsp

@PaulThompson
Copy link

More options for union serialisation.
I particular ability to have a unit type field of a union serialise as users choice of null, {}, [] (or the existing: field label)
So that the field can change in future to become any Nullable<T>, struct or Vector<T>

@PaulThompson
Copy link

Ability to opt out of unions code-generating as an enum.
It complicates generic tools because unions that generate as enum have to be treated differently and during development a type can flip between being a normal union and being an enum when a field is added/removed.

@PaulThompson
Copy link

Implement Nullable for c++ (target c++17 and use std::optional)

@bitc
Copy link

bitc commented Jul 21, 2020

I have added a comment on #97 (regarding strict fields). I bring this up here, because this is something that could affect backwards compatibility.

@PaulThompson
Copy link

In c++ - given ADL module
module aa.bb.cc {};
it should be changed (non-backwards compatible) to generate c++ code in namespaces:

namespace aa {
namespace bb {
namespace cc {
// ...
}}}

Currently it generates to namespace:

namespace ADL {
namespace aa {
namespace bb {
namespace cc {
// ...
}}}

which IIUC isn't requested or controlled by the caller.

@timbod7
Copy link
Collaborator Author

timbod7 commented Aug 5, 2020

it should be changed (non-backwards compatible)

I don't think this needs to be a backward imcompatible change - don't we just need a flag for c++ that controls into which namespace ADL code is generated? We have equivalent flags for most other target languages.

@timbod7
Copy link
Collaborator Author

timbod7 commented Nov 15, 2020

Drop the baked in json support in the C++ backend, and use nlohmann json.

@timbod7
Copy link
Collaborator Author

timbod7 commented Nov 17, 2020

There's now a milestone for "release 1.0", which will be added to issues as they make the cut.

@timbod7
Copy link
Collaborator Author

timbod7 commented Nov 17, 2020

@gmhta I'm leaving:

  • lsp
  • packaging system

out of the 1.0 release milestone, as I think they can be added when time permits without breaking existing usage.

@timbod7
Copy link
Collaborator Author

timbod7 commented Nov 17, 2020

@paul-thompson-helix

nullable support in c++ has already landed in f42788e

@timbod7
Copy link
Collaborator Author

timbod7 commented Dec 18, 2020

Also see the release-1.0 branch for progress on these issues.

@timbod7 timbod7 modified the milestone: Release 1.0 Mar 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants