wiki:FutureHaiku/APIChangesOnCompatibilityDrop

This page is a collection of API changes we intend to make as soon as we drop BeOS backward compatibility. Feel free to add comments concerning any API removal/change/addition to be done.


General:

  • Redo shared libraries: there should be one library per kit and corresponding names for each. (possible conventions are "libsupport.so", "libSupport.so", "libSupportKit.so")
    • Probably not possible, there are a lot of interdependencies between the kits. Also, it's not clear what the benefits of this would be?
  • Stop supporting the GCC2 ABI
  • Switch to LLVM?
  • uint32 on 32-bit systems is defined as an "unsigned long", while uint32_t is an "unsigned int".

POSIX:

  • Drop stat_beos in favor of stat.
  • More breakage to fully switch to a 64-bit time_t (there is one syscall that needs to be tweaked, and 32-bit Haiku is still on 32-bit time_t)
  • Replace glibc (use parts of musl? it's MIT licensed).
  • Multiuser! (some general things that need to be cleaned up at the same time: Tracker's ConfirmChangeIfWellKnownDirectory).
  • Get rid of R5 compat stuff in Network Kit.
  • Change termios struct to have larger c_ispeed and c_ospeed fields that can store any baudrate, like FreeBSD.

Application Kit:

  • Integrate the functionality of BInvoker::InvokeNotify() into BInvoker::Invoke().

Support Kit:

  • Replace BAutolock with a proper template based AutoLocker, like the one we have in shared already.
  • convert_encoding_open() convert_encoding_close() with respect to UTF-8, #976 (or perhaps drop textencoding altogether and create a ByteArray class in the Support Kit that can handle encodings?)

Interface Kit:

  • Derive BView from BLayoutItem and drop BViewLayoutItem?
  • Remove GetPreferredSize() from BView and child classes in favor of PreferredSize() (however, this would mean all classes which override PreferredSize would have to use ComposeSize...)
  • Remove copy constructors on BRect, rgb_color and other small classes that do not need it, so they can be passed in registers.
  • Create a model/view infrastructure for the column list view and OutlineListView. (see Debugger's MVC wrapper over current CLV) (maybe look at Qt's [rejected] Model/Views 2.0?)
  • BAlerts should be layout-aware along with all other rich text views.
  • All rich text views should accept (simple) style markup as input and as output (maybe HTML).
  • Add a BToolbar API (the currently-shared BToolBar should be a good basis, it needs support to add arbitrary BViews)
    • Also need standard icons resources, probably following FreeDesktop's spec.
    • This does not have to wait for the compatibility drop?
  • Cleanup BTabView -- get rid of the non-layout version. (Terminal may need a rewrite...)
    • Decouple tab label from its name.
  • Don't eat all Cmd key combos even if they don't have any action assigned.
  • Use enums for B_FOLLOW, etc. constants (if we keep them at all? All new apps use the layout system and don't need them)

Media Kit:

  • The API uses add_on and AddOn, but also addon - the latter should be faded out.
  • Get rid of R5 compatibility stuff (and R3 (!) compatibility stuff).

Tracker:

  • FilePanel does not use layouts due to the Be Book's recommendation for developers to mess with the layout if they needed to.
Last modified 13 months ago Last modified on Nov 5, 2023, 1:43:00 PM
Note: See TracWiki for help on using the wiki.