Win32 non-backwards compatible API change
Gauthier Segay
gauthier.segay at gmail.com
Fri Jan 27 17:52:02 UTC 2017
the reasoning is that user upgrading can easily define that function
which save changing each call site; this makes the breaking change
reasonable to me.
On Fri, Jan 27, 2017 at 6:49 PM, Tamar Christina <tamar at zhox.com> wrote:
>
> > findWindow lpClassName lpWindowName = WIN32.findWindow (Just
> > lpClassName) (Just lpWindowName)
> >
> > this allow quick fix of code base without changes at call sites (just
> > one import)
>
> I also thought about providing an old-win32 package which did this, but it wouldn't get
> any further update so I'm not sure it's worth it. Would certainly increase the maintenance.
>
> Most packages have strict version bounds on Win32, (as I found out when updating GHC's shipping version).
>
> So I think for most people they'd have to opt in to this version.
>
> >
> > this is unless users are willing to change each call sites, which
> > shouldn't be too much trouble with help of compiler
> >
> >
> >
> > On Fri, Jan 27, 2017 at 4:19 PM, Elliot Cameron <eacameron at gmail.com> wrote:
> > > As painful as the transition might be, we desperately need to set this right
> > > sooner rather than later. The number of libraries depending on win32 is not
> > > going to decrease over time.
> > >
> > > +1
> > >
> > > On Jan 27, 2017 7:54 AM, "Tamar Christina" <tamar at zhox.com> wrote:
> > >>
> > >> Hi All,
> > >>
> > >> I want to revive and push forward a change first proposed in 2014 for an
> > >> API
> > >> change in the Win32 package.
> > >>
> > >> The discussion at that time took place here
> > >> https://github.com/haskell/win32/issues/24
> > >>
> > >> In short, In the Windows API it is common that when a function accepts a
> > >> pointer to something,
> > >> that NULL also be valid and defaults to some action. Such an example is
> > >> the FindWindow call.
> > >>
> > >>
> > >> https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx
> > >>
> > >> HWND WINAPI FindWindow(
> > >> _In_opt_ LPCTSTR lpClassName,
> > >> _In_opt_ LPCTSTR lpWindowName
> > >> );
> > >>
> > >> In this case, both the ClassName and the WindowName are allowed to be
> > >> NULL.
> > >>
> > >> The Haskell binding to this function is findWindow :: String -> String ->
> > >> IO (Maybe HWND).
> > >> So we've lost the ability to use the default parameters.
> > >>
> > >> The proposal is to change such functions to accept Maybe:
> > >>
> > >> findWindow :: String -> String -> IO (Maybe HWND)
> > >>
> > >> becomes
> > >>
> > >> findWindow :: Maybe String -> Maybe String -> IO (Maybe HWND)
> > >>
> > >> Which also would more accurately match the original API. This is of course
> > >> a backwards incompatible change.
> > >>
> > >> Any objections to this change?
> > >>
> > >> Thanks,
> > >> Tamar
> > >>
> > >>
> > >>
> > >> _______________________________________________
> > >> Libraries mailing list
> > >> Libraries at haskell.org
> > >> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
> > >
> > >
> > > _______________________________________________
> > > Libraries mailing list
> > > Libraries at haskell.org
> > > http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
> > >
> >
> >
>
>
>
More information about the Libraries
mailing list