Atmosphere/libraries/libstratosphere
Michael Scire b7ec64ea16 fs.mitm: add and use memlet module to temporarily steal applet memory while building romfs images.
Starting in 20.0.0, the browser needs more applet memory to function, so we can't steal as much any more.
Thus, we now steal 14 MB on 20.0.0+ instead of 40MB.

However, since this reduces memory available for custom system modules, we are adjusting to compensate.
ams.mitm's heap size has been reduced from 32MB to 12MB (recovering 20MB).
In addition, fs.mitm now uses a new mechanism for stealing memory from the applet pool while romfs is being built.

On net, we are compromising:
    * Custom sysmodules lose memory available to them.
        On 19.0.0/AMS 1.8.0, there was 30 MB available for custom sysmodules.
        Stealing 14 MB instead of 40 MB, we lose 26 MB of that. Reducing ams.mitm's usage will gain us back 20.
        Nintendo also appears to...use 4 extra MB, in 20.0.0, from my test homebrew.
        So on 20.0.0/AMS 1.9.0, there should be 20 MB available for custom sysmodules.
        On the bright side, on <20.0.0/AMS 1.9.0, I guess there will be 50 MB available for custom sysmodules now?
    * totk mods will lose the ability to...put every file in the romfs on sd card. There will be some unknown maximum filecount for totk mods.
        On the bright side, implementing the transient memory stealing should improve compatibility for some mods which strictly add files?
2025-05-09 11:55:21 -07:00
..
include fs.mitm: add and use memlet module to temporarily steal applet memory while building romfs images. 2025-05-09 11:55:21 -07:00
source fs.mitm: add and use memlet module to temporarily steal applet memory while building romfs images. 2025-05-09 11:55:21 -07:00
discard-ehframe.ld stratosphere: discard unnecessary .eh_frame segment 2021-01-13 08:30:24 -08:00
libstratosphere.mk libstrat: re-nolto files when compiling for windows-audit 2024-10-29 19:30:30 -07:00
Makefile ams: support building unit test programs on windows/linux/macos 2022-03-21 17:21:44 -07:00
README.md licensing: update exemptions (approved by contributors). 2020-04-16 17:33:04 -07:00
stratosphere.specs stratosphere: discard unnecessary .eh_frame segment 2021-01-13 08:30:24 -08:00

License

libstratosphere is a work-in-progress C++ library for development of system modules for the Nintendo Switch.

It is built around extending libnx.

It also provides bindings for custom extensions to Horizon OS implemented by Atmosphère.

Licensing

This software is licensed under the terms of the GPLv2, with exemptions for specific projects noted below.

You can find a copy of the license in the LICENSE file.

Exemptions:

  • The yuzu Nintendo Switch emulator and the Ryujinx Team and Contributors are exempt from GPLv2 licensing. They are permitted, each at their individual discretion, to instead license any source code authored for the libstratosphere project as either GPLv2 or later or the MIT license. In doing so, they may alter, supplement, or entirely remove the copyright notice for each file they choose to relicense. Neither the Atmosphère project nor its individual contributors shall assert their moral rights against any of the aforementioned projects.
  • Nintendo is exempt from GPLv2 licensing and may (at its option) instead license any source code authored for the libstratosphere project under the Zero-Clause BSD license.

Credits

libstratosphere is currently being developed and maintained by SciresM.

In addition to those credited in Atmosphère's credits, we would like to thank for contributing to libstratosphere in some significant way:

  • hthh
  • fincs
  • lioncash
  • misson20000
  • neobrain
  • yellows8
  • @Nintendo