Once again, I present to you the newest release of the WIP branch of Allegro. This time there were a lot more new features added than during the previous release, because, as everybody knows, it's much more fun to add new bugs rather than fix old ones. Just kidding, we fixed plenty of old bugs too . Some of the features are pretty nifty, such as the clipboard support.

We had quite a few new contributors this time around, and in fact most of the changed lines of code were not even done by the old team! That's pretty exciting.

Once again, I changed the format of the MSVC binaries. Now all of the dependencies are statically linked, including the MSVC runtime. The only exception are the debug builds of Allegro, which link the dynamic runtime still. Hopefully this works well for everybody. The motivation for that was that people probably don't care what Allegro does under the hood, so we shouldn't burden people by making these dependencies explicit. Another new thing is that we now have MSVC 2015 binaries.

MinGW and Ubuntu binaries are not yet ready and will be made in the coming days.

Audio addon

Font addon

Add al_draw_glyph, al_get_glyph_width, al_get_glyph_dimensions and al_get_glyph_advance. These functions are useful when additional control is needed when drawing text.

Add al_set_fallback_font.

Image addon

Add al_register_bitmap_identifier, al_identify_bitmap and al_identify_bitmap_f. This allows detecting the bitmap type by looking at the initial few bytes in the file rather than relying solely on the extension.

Allow saving bitmaps with uppercase extensions (Daniel).

Native dialog addon

Fix crashes when creating menus with sub-menus (Todd Cope).

Video addon

Allow using both Ffmpeg and Theora backends simultaneously.

Reduce latency of al_get_video_frame for the Theora backend.

Make the Theora backend send the ALLEGRO_VIDEO_FRAME_SHOW events.

Rename al_get_video_width/height to al_get_video_scaled_width/height which now return the aspect corrected size of the video frame.

I think it's pretty normal to just report number of logical processors. It's fairly safe to assume you can use all logical processors as if they are physical cores unless you are doing some super duper heavy calculations that HT would only make slower. Games though tend to do enough waiting that HT will only accelerate work loads.

It might make sense to add a "al_get_physical_cpu_count" or something equivalent, in case you really care.

How do I get the library, the demos, and the examples all to build statically without depending on the C or C++ std libraries? I've tried several different flags, trying these first in cmake-gui :CMAKE_EXE_LINKER_FLAGS -static-libgcc -static-libstdc++CMAKE_MODULE_LINKER_FLAGS -static-libgcc -static-libstdc++

With these flags set, it builds the static library, and then fails to build the cosmic protector demo, which is C++. It fails because of redefinition errors in std::string and __gxx_personality_v0 due to relinking the std library somehow.

This is MinGW 4.8.1 on Vista. The CMake options are :CMAKE_C_FLAGSCMAKE_CXX_FLAGSCMAKE_EXE_LINKER_FLAGSCMAKE_MODULE_LINKER_FLAGS

If I compile with no flags present for any of the aforementioned cmake variables then the examples all depend on lib_gcc_sw-2.dll or whatever and libstdc++-6.dll. I want them to be static linked to the CRTs as well.

You don't link the libraries against any lib at all. GCC won't do it either unless you force it. It'll leave the symbols as undefined. When you go to link your actual program, you tell it to link to everything statically.