Releases: SFML/CSFML
3.0.0
This is the official CSFML 3 release! 🎉
CSFML is the C binding for the C++ library SFML.
This is a release brings CSFML it in line with SFML 3 and will allow for properly updating SFML.Net as well.
Changes
A lot of work went into updating the CMake infrastructure to bring it closer to the same setup used by SFML, also leaning more into the fact that CSFML is internally still a C++ library, but with a C interface.
Updates for SFML 3
- Begin work on CSFML v3 by @ChrisThrasher in #225
- Compile CSFML with SFML 3.0 by @Marioalexsan in #238
- Catch up with SFML 3 API changes by @ChrisThrasher in #247
- Update to latest SFML 3 API by @ChrisThrasher in #255
- Remove references to OpenAL by @ChrisThrasher in #263
- Update to latest SFML 3 API by @ChrisThrasher in #264
- Simplify event conversion by @ChrisThrasher in #290
- Add missing
sfSoundBufferRecorderfunctions inherited fromsf::SoundRecorderby @ChrisThrasher in #294 - Add missing
sfSoundBufferRecorderfunctions inherited fromsf::SoundRecorderby @ChrisThrasher in #300 - Add missing window state parameters by @ChrisThrasher in #316
- Update to new anti-aliasing naming by @ChrisThrasher in #319
- Match return types with underlying SFML interface by @ChrisThrasher in #324
- Implement
getGeometricCenterby @ChrisThrasher in #345 - Implement new
sf::Clockfunctions by @ChrisThrasher in #346 - make sfRenderStates_default an extern const variable like sfColor constants by @ZXShady in #348
- Implement new graphics, system and window functions by @Marioalexsan in #350
- Implement new audio functions by @Marioalexsan in #349
- Update enumerations to match SFML 3 by @ChrisThrasher in #354
- Align sfRenderStates with sf::RenderStates by @Marioalexsan in #368
- Use SFML 3.0.0 tag by @ChrisThrasher in #376
- Centrally define SFML version by @ChrisThrasher in #377
- Update Network module code by @Marioalexsan in #388
- Add missing setMinimumSize and setMaximumSize window methods by @eXpl0it3r in #399
- Implement resize for Texture by @dogunbound in #402
- Split texture's resize function into sRGB and non-sRGB by @eXpl0it3r in #408
- Update SFML version to 3.0.2 by @eXpl0it3r in #415
General Build Code Improvements
- Remove trailing whitespace by @ChrisThrasher in #231
- Remove unused code by @ChrisThrasher in #232
- Set compiler warnings on a per-target basis by @ChrisThrasher in #240
- Reenable some MSVC warnings by @ChrisThrasher in #268
- Switch to
#pragma onceby @ChrisThrasher in #266 - Remove references to removed types by @ChrisThrasher in #271
- Remove deprecated interfaces by @ChrisThrasher in #272
- Move CSFML source files to CSFML/ directory by @ChrisThrasher in #269
- Convert private C++ headers to .hpp file extension by @ChrisThrasher in #220
- Remove unnecessary
(void)parameters from C++ implementations by @ChrisThrasher in #274 - Add
tidytarget for running clang-tidy by @ChrisThrasher in #276 - CMake: Fix installing HTML Help with newer Doxygen version by @Biswa96 in #270
- Added functions to convert between corresponding SFML and CSFML types by @ChrisThrasher in #273
- Stop leaving variables unused in release builds by @ChrisThrasher in #277
- Use vectors for pairs of scalar parameters by @ChrisThrasher in #279
- Add new clang-format integration and reformat codebase by @ChrisThrasher in #280
- Clean up implementation of
sf<T>Rect_intersectsby @ChrisThrasher in #282 - Remove unnecessary
externfrom C function declarations by @ChrisThrasher in #283 - Use
assertto protect against dereferencing null pointers by @ChrisThrasher in #287 - Remove leading newlines by @ChrisThrasher in #292
- Put common configuration settings in a CMakePresets file by @ChrisThrasher in #281
- Use
SFML_ROOTto find SFML installation by @ChrisThrasher in #286 - Simplify FTP types by @ChrisThrasher in #293
- Ensure CMake options include
CSFML_prefix by @ChrisThrasher in #296 - Use more
[[nodiscard]]by @ChrisThrasher in #297 - Use parentheses for constructor calls by @ChrisThrasher in #303
- Use project-local CMake variables by @ChrisThrasher in #304
- Move
copyToChar32to the one file where it's used by @ChrisThrasher in #305 - Add missing
sfprefix by @ChrisThrasher in #307 - Revert "Remove unnecessary
externfrom C function declarations" by @ChrisThrasher in #308 - Remove unnecessary .gitignore entries by @ChrisThrasher in #310
- Support building CSFML as static libraries by @ChrisThrasher in #311
- Enforce variable and parameter casing style by @ChrisThrasher in #312
- Use modern CMake property to handle static runtime linking with MSVC by @ChrisThrasher in #313
- Use
ONandOFFfor CMake booleans by @ChrisThrasher in #321 - Remove redundant definition by @ChrisThrasher in #322
- Stop using deprecated
DOXYGEN_EXECUTABLEvariable by @ChrisThrasher in #323 - Improve const correctness of
_destroyfunctions by @ChrisThrasher in #327 - Clean up documentation and corresponding build system code by @ChrisThrasher in #328
- Assert that shader uniform names are not null by @ChrisThrasher in #330
- Assert that filepath strings are not null by @ChrisThrasher in #333
- Assert string arguments are not null by @ChrisThrasher in #335
- Assert against arguments which would invoke UB by @ChrisThrasher in #339
- possible null pointer dereference in sfRenderTexture_destroy by @ZXShady in #340
- fix clang tidy warning about reserved identifier in WindowHandle.h by @ZXShady in #341
- Remove all
deletecalls outside of_destroyfunctions by @ChrisThrasher in #337 - add missing asserts in Font.cpp by @ZXShady in #343
- Remove unnecessary constructors by @ChrisThrasher in #342
- Manually inline
sfShapeImplby @ChrisThrasher in #344 - Use inheritance to remove
Thisdata member by @ChrisThrasher in #347 - Simplify shader creation functions by @ChrisThrasher in #351
- Prefix library options with
CSFML_by @ChrisThrasher in #352 - Use functions from the C++ standard library by @ChrisThrasher in #355
- remove unnecessary boolean comparison
!= 0by @ZXShady in #356 - make sfTime_Zero const global variable by @ZXShady in #357
- remove cstyle default init by @ZXShady in #359
- use aggregate initialization to initialize by @ZXShady in #358
- make static variables const via lamdbas by @ZXShady in #362
- cast to larger type before doing arithmetic to avoid signed integer o… by @ZXShady in #360
- Remove unnecessary
static_casts by @ChrisThrasher in #363 - check malloc return value for NULL and update docs by @ZXShady in #361
- Move ConvertEvent.hpp file into window module folder. by @ZXShady in #364
- Pass by reference if it is never null by @ZXShady in #365
- Make enumeration counts constant expressions by @ZXShady in #366
- Clean up
sfIpAddressimplementation ...
3.0.0-rc.3
Hopefully this is the last-last Release Candidate addressing the API design for the texture resize function with regards to sRGB. Additionally, @JupiterRider reported an issue regarding the CRT on Windows, which lead to a packaging fix.
- Split texture's resize function into sRGB and non-sRGB by @eXpl0it3r in #408
- update copyright year to 2025 by @JupiterRider in #411
- Package runtime DLLs for NuGet by @eXpl0it3r in #412
Full Changelog: 3.0.0-rc.2...3.0.0-rc.3
3.0.0-rc.2
This is the second and final (maybe) release candidate for CSFML 3, which adds two missing API changes and updates the NuGet package creation process to allow updating SFML.Net, while making preparations for the official CSFML 3 release.
- Add missing setMinimumSize and setMaximumSize window methods by @eXpl0it3r in #399
- Implement resize for Texture by @dogunbound in #402
- Add tests for
sfImageby @ChrisThrasher in #403 - Various improvements to the CI pipelines and NuGet packaging
Full Changelog: 3.0.0-rc.1...3.0.0-rc.2
3.0.0-rc.1
This is a release candidate for CSFML 3, which brings it in line with SFML 3 and allows for properly updating SFML.Net.
Beyond small fixes here and there the main changes in this release are:
- Updated to use SFML 3
- clang-tidy support added
- Many new tests added
Full Changelog: 2.6.1...3.0.0-rc.1
CSFML 2.6.1
We've missed a few methods and did some cleaning up for the documentation
- Implement missing functions (#236) @Marioalexsan
- Add count parameter to sfVulkan_getGraphicsRequiredInstanceExtensions (#229) by @mgrojo
- Minor fixes of the documentation (#228) by @mgrojo
- Added sfFont_hasGlyph (#230) by @texus
- Fix pkgconfig files install path (#234) by @kimci86
- Fix Doxygen Generation (#246) by @eXpl0it3r
- Release & NuGet builds automation (#249, #250, #252) by @eXpl0it3r
Thank you to everyone who contributed!
CSFML 2.6.0
Finally bringing CSFML inline with SFML 2.6! 🎉
- SFML feature implementations:
sfFont_setSmooth/sfFont_isSmooth(#186) by @dogunboundsfPacket_getReadPosition(#186) by @dogunboundsfBlendMin&sfBlendMax(#191) by @ChrisThrashersfFloatRect_getPosition/sfIntRect_getPosition&sfFloatRect_getSize/sfIntRect_getSize(#190) by @ChrisThrasher- Document MP3 support (#193) by @ChrisThrasher
- Add directional arrow resize cursors (#194) by @ChrisThrasher
sfFont_getBoldKerning(#192) by @dogunbound- Add
sf::Vulkanfunctions (#198, #212) by @ChrisThrasher & @eXpl0it3r - Add scancode support (#197) by @ChrisThrasher
sfRenderTexture_isSrgb/sfRenderWindow_isSrgb(#196) by @ChrisThrashersfImage_saveToMemorywithsfBuffer(#205) by @kimci86sf::WindowBase(#207) by @ChrisThrasher
- Various CI improvements (#186, #201, #204, #206, #214, #216, #224) by @dogunbound & @ChrisThrasher & @eXpl0it3r
- Use
sf::err()for logging (#221) by @ChrisThrasher - CSFML usage improvements (#189) by @tintou
- Add pkg-config support (#188) by @tintou
- Add and build example (#215) by @ChrisThrasher
- Enable and fix compiler warnings (#200, #219) by @ChrisThrasher & @kimci86
- Documentation fixes (#199, #203) by @kimci86 & @mgrojo
- Code clean ups (#218) by @ChrisThrasher
Thank you to everyone who contributed!
CSFML 2.5.2
After a lot of hours put into getting the NuGet package for CSFML to work with SFML.Net on macOS, we've finally achieved it and CSFML 2.5.2 is ready for release! It again contains a lot of important bugfixes.
- Make sure CallbackStream doesn't get destroyed before the Music (#163) by @crumblingstatue
- Slight modernization on the CMake build system (#170, #172, #184) by @brightprogrammer & @ChrisThrasher
- Add missing functions (#148) by @Luhrel
- sfShader_createFromX
- sfContext_isExtensionAvailable
- sfTextureCoordinateType with sfTexture_bind
- _drawVertexBufferWithIndex to _drawVertexBufferRange & Implements sfRender[Window/Texture]_drawVertexBufferWithIndex
- sfContext_getFunction
- Added functions for creating sRGB enabled textures from file / memory (#177) by @EnokViking
- Fix matrix comparison in sfTransform_equal (#181) by @Bqleine
- Add function for default RenderState (#178) by @Bqleine
- Add support for macOS (#185) by @eXpl0it3r
Thank you to everyone who contributed!
CSFML 2.5.1
This is a bugfix release that addresses the following topics:
- Add missing export flag (#139)
- Add missing
sfTexture_updateFromTexturefunction implementation (#141) - Correct
sfRenderTexture_createWithSettingsfunction signature (#137) - Add support for GitHub Actions
- Various fixes related to the NuGet builds