Logo Mibo

Migrating to Mibo v5

This page collects the changes between the last v4 release (4.5.3) and v5. v5 does not change any code you wrote: it changes which packages carry which code. Mibo now ships as two independent runtime lanes — MVU and Adaptive — on top of a shared kernel, and every namespace, type, and member keeps the home it always had.

_The short answer for most games: swap one package reference, recompile, done. There are no source-level breaks in v5. A full public-API diff between the v4 assemblies and the v5 assemblies shows zero names removed and zero names added. The only required edit is in your .fsproj._

What v5 is

Mibo.Core              
                         RenderBuffer, GameConfig, IInput/IInputMapper contracts,
                         IAssetCache, Layout/Layout3D, Diagnostics)
Mibo.Mvu               
                         ElmishLoop, HeadlessProgram, MVU input subscriptions)
Mibo.Adaptive          
                         dependency-free)
Mibo.Adaptive.Mibo     
                         AdaptiveHeadless, AdaptiveInput)
Mibo.Raylib            
                         input/assets implementations; no hosts)
Mibo.Raylib.Mvu        
                         InputMapper.subscribe)
Mibo.Raylib.Adaptive   
                         InputMapper.subscribeAdaptive)
Mibo.MonoGame          
Mibo.MonoGame.Mvu      
                         InputMapper.subscribe)
Mibo.MonoGame.Adaptive 
                         AdaptiveMonoGameGame, InputMapper.subscribeAdaptive)

The motivation: in v4, Mibo.Core depended on Mibo.Adaptive, so every game — including a plain MVU game — pulled the adaptive dataflow library. v5 removes that dependency. MVU installs pull no adaptive code, and adaptive installs pull no MVU code.

1. Swap the package reference for your lane

Who is affected: everyone who references Mibo.Raylib or Mibo.MonoGame. Consumers of Mibo.Core or Mibo.Adaptive alone need no change.

Your game

Before (v4)

After (v5)

MVU, raylib

Mibo.Raylib

Mibo.Raylib.Mvu

MVU, MonoGame

Mibo.MonoGame

Mibo.MonoGame.Mvu

Adaptive, raylib

Mibo.Raylib + Mibo.Adaptive

Mibo.Raylib.Adaptive

Adaptive, MonoGame

Mibo.MonoGame + Mibo.Adaptive

Mibo.MonoGame.Adaptive

Headless MVU (servers, tests)

Mibo.Core

Mibo.Mvu

Headless adaptive

Mibo.Core

Mibo.Adaptive.Mibo

Before (v4, MVU + MonoGame):

<PackageReference Include="Mibo.MonoGame" Version="4.*" />
<PackageReference Include="MonoGame.Framework.Native" Version="3.8.5" PrivateAssets="all" />

After (v5):

<PackageReference Include="Mibo.MonoGame.Mvu" Version="5.*" />
<PackageReference Include="MonoGame.Framework.Native" Version="3.8.5" PrivateAssets="all" />

Before (v4, adaptive + raylib):

<PackageReference Include="Mibo.Raylib" Version="4.*" />
<PackageReference Include="Mibo.Adaptive" Version="4.*" />

After (v5) — the adaptive host brings the shell, the kernel, Mibo.Adaptive, and Mibo.Adaptive.Mibo transitively:

<PackageReference Include="Mibo.Raylib.Adaptive" Version="5.*" />

Notes:

2. Recompile

Who is affected: everyone. This is the v5 binary break, and it is the same one every package reorganization causes.

Code that moved packages kept its assembly identity change: Program, Cmd, and Sub now live in Mibo.Mvu.dll (were Mibo.Core.dll); AdaptiveProgram and AdaptiveHeadless live in Mibo.Adaptive.Mibo.dll; RaylibGame lives in Mibo.Raylib.Mvu.dll, and so on. Pre-compiled assemblies built against v4 must be recompiled against v5 — the standard contract of a major version. There is nothing to change in your source while doing it.

A few runtime-neutral types that both runtimes share moved from the v4 Elmish-flavored files into the kernel and keep their exact names and Mibo.Elmish namespace: GameContext, IRenderer<'Model>, RenderBuffer<_,_>, GameTime, FixedStep, SubId, and GameConfig. open Mibo.Elmish resolves them exactly as before.

3. Templates

The dotnet new template names are unchanged (mibo-2d, mibo-mg-3d-adaptive, …). The MVU starters now reference the *.Mvu packages and the adaptive starters reference the single *.Adaptive package; all starters pin 5.*.

4. Versioning notes

Type something to start searching.