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 6 months ago Last modified on Nov 5, 2023, 1:43:00 PM
Note: See TracWiki for help on using the wiki.