--- /dev/null
+# Changelog
+
+## Version 1.0.0
+
+* New features:
+ - libctru documentation is now available at http://smealum.github.io/ctrulib/
+ - Added the NDSP API, which allows the use of the DSP (audio).
+ - Added Inter Process Communication helpers.
+ - Added Result code helpers.
+ - Added support for lightweight synchronization primitives.
+ - Added support for making the C/C++ standard libraries thread safe.
+ - Added support for thread-local objects, with the use of standard C and C++ constructs (or GCC extensions).
+ - Added a new threading API that properly manages internal state. Direct usage of svcCreateThread is deprecated.
+ - Added a mappable address space allocator. Services which need to map shared memory blocks now use this allocator.
+ - Added support for embedded RomFS, embedded SMDH and GPU shader building in the template Makefiles.
+
+* Changes and additions to the GPU code:
+ - Stateless wrapper functions (GPU_*) that merely masked GPU register usage were deprecated, in favour of external GPU wrapper libraries such as citro3d. A future release of libctru may remove them.
+ - The API set has therefore been simplified down to command list management.
+ - Synchronized register names with the 3dbrew Wiki.
+ - Added fragment lighting registers and enums.
+ - Added procedural texture registers and enums.
+ - Added shaderProgramSetGshInputPermutation, for configuring the wiring between the vertex shader and the geometry shader.
+ - Added shaderProgramSetGshMode, for configuring the geometry shader operation mode.
+ - Added shaderProgramConfigure, intended to be used by GPU wrapper libraries.
+ - SHBIN/shaderProgram code now correctly computes and sets the values of the GPUREG_SH_OUTATTR_MODE/CLOCK registers.
+ - GX function naming has been improved, and the initial GX command buffer parameter has been removed.
+
+* Major changes and miscellaneous additions:
+ - Sweeping changes to make function/structure/enum naming more consistent across the whole library. This affects a lot of code.
+ - Compiler/linker flags have been tweaked to increase performance and reduce code size, through the garbage collection of unused functions.
+ - Service initialization is now reference counted in order to properly manage dependencies.
+ - Initial service handle parameters have been removed, since they were nearly always set to NULL.
+ - Completed coverage of srv and FSUSER service calls.
+ - Added fsUseSession and fsEndUseSession for overriding the FSUSER session used in commands in the current thread.
+ - Added osGet3DSliderState, osSetSpeedupEnable, osGetSystemVersionData and osGetSystemVersionDataString.
+ - Refactored the MICU service.
+ - NCCH versions of applications now detect the maximum amount of available memory on startup.
+
+* Miscellaneous changes and bug fixes:
+ - Commits and pull requests are now built on travis to check that the library compiles, and to generate the documentation.
+ - General changes and improvements to overall code quality.
+ - Added the missing struct and functions for Y2R.
+ - Added srvGetServiceHandleDirect for bypassing the handle override mechanism.
+ - Usage of the CSND service in new applications is not recommended, however it is not deprecated. The usage of NDSP instead is advised.
+ - Usage of the HB service in new applications is not recommended due to its necessary removal in hax 2.x, however it is not deprecated.
+ - Several bugs affecting APT were fixed.
+ - Several bugs affecting C++ were fixed.
+
+## Version 0 through 0.6.0
+
+No changelog available.
-# ctrulib
+# libctru - CTR User Library
-CTR User Library
+Library for writing user mode ARM11 code for the 3DS (CTR)
-Library for writing user mode arm11 code for the 3DS (CTR)
-
-The goal with this is to create a very straightforward interface with the 3DS's OS.
-It is not meant to provide higher level functions; to put things in perspective, the purpose of ctrulib would be to sit between the OS and a possible port of SDL rather than replace it.
+This library aims to provide the foundations necessary to write 3DS Homebrew, and straightforwardly access the different functionalities provided by the 3DS operating system.
+It is not meant to provide higher level functions; to put things in perspective, the purpose of libctru would be to sit between the OS and a possible port of SDL rather than replace it.
# Setup
-ctrulib is just a library and needs a toolchain to function. We built ctrulib to be used in conjunction with devkitARM. You may find instructions on how to install devkitARM on [the devkitPro Wiki](http://devkitpro.org/wiki/Getting_Started).
+libctru is just a library and needs a toolchain to function. devkitARM (created by [devkitPro](http://devkitpro.org)) is the officially supported ARM cross compiling toolchain, which provides the framework necessary to supply a usable POSIX-like environment, with working C and C++ standard libraries; as well as the tools required to compile homebrew in the 3DSX format, and assemble GPU shaders. The use of other ARM toolchains is severely discouraged.
-The most recent devkitARM (r44) includes 3DS support and a prebuilt libctru.
+The most recent version of devkitARM (r45 at the time of writing) is always recommended. The installers/setup scripts supplied by devkitPro install a prebuilt copy of the latest stable version of libctru, which is recommended for general use. Please note that devkitPro has a policy of keeping legacy code to a minimum, so a library upgrade may result in older code failing to compile or behave properly. Developers are encouraged to keep their code working with the latest versions of the tools and libraries.
-To keep up to date with the most recent changes you'll want to checkout ctrulib, build it and install it.
+You may find instructions on how to install devkitARM on [the devkitPro Wiki](http://devkitpro.org/wiki/Getting_Started).
# License
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = ""
+PROJECT_NUMBER = "$(TRAVIS_TAG)"
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# spaces.
# Note: If this tag is empty the current directory is searched.
-INPUT = include ../README.md
+INPUT = include ../README.md ../Changelog.md
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
include $(DEVKITARM)/base_rules
-export LIBCTRU_MAJOR := 0
-export LIBCTRU_MINOR := 6
+export LIBCTRU_MAJOR := 1
+export LIBCTRU_MINOR := 0
export LIBCTRU_PATCH := 0
all: $(BUILD)
dist-bin: all
- @tar -cjf libctru-$(VERSION).tar.bz2 include lib default_icon.png
+ @tar --exclude=*~ -cjf libctru-$(VERSION).tar.bz2 include lib default_icon.png
dist-src:
- @tar -cjf libctru-src-$(VERSION).tar.bz2 include source data Makefile Doxyfile Doxyfile.internal default_icon.png
+ @tar --exclude=*~ -cjf libctru-src-$(VERSION).tar.bz2 include source data Makefile Doxyfile Doxyfile.internal default_icon.png
dist: dist-src dist-bin