The most recent versions you simply want to avoid completely until something is done about some of the severe bugs and performance issues which have been introduced in the last 2 years for little to no actual benefit and definitely won't run on some low powered ARM board or phone.
Can you clarify what version(s) you are calling "recent"? Looking here, two years ago was about version 0.134. Is that what you recommend as best? Also what kind of bugs would manifest, is it obvious? I just want to know what specifically to look for and avoid.
It's hard to put an exact number on it, but there have been some really nasty issues introduced with some drivers over the last couple of years, see the thread complaining about some insane levels of slowdown in Wardner for example, apparently that was introduced around 0.139u2 as the result of some changes Aaron made to the banking and memory system. It appears to have since become worse.
Other games have seen performance issues introduced due to the overhead of the timer system, and devices being converted to use it. Aaron wanted things to be updated to be modern devices, and use his internal timer / scheduling system for any timers, but the problem is when a game attempts to set up a high frequency timer it can absolutely slaughter the framerate, as happened on several Namco System 1 sets resulting in significantly worse performance is selected areas of those. (which was then further compounded by the banking thing above)
I'm also observing some weird and unexpected behavior even with drivers I've worked on. Some of the games on MegaSystem32 are showing sprite / background desync issues for no obvious reason, and highly dependent on framerate, even tho there is no code at all in the driver which should depend on the actual framerate. I have no idea when this was introduced, but it's hard to fix as the behavior is no longer deterministic.
There's also a long standing issue with the OKI sound chip, which is one of the most common in MAME
http://www.mametesters.org/view.php?id=4268This causes most games using it to break in nasty ways if save states are used, and was introduced when Aaron attempted to convert the driver to C++. It was never fixed
Long fixed bugs with Joypad buttons not being saved / corrupt config files have been reintroduced. This happened when Aaron updated this side of MAME to use C++ etc.
On a development front, the current toolchain is highly unstable, and hindering my ability to actually debug and work on the project, the debugging tools don't work properly, gdb isn't even packaged properly in the 64-bit toolchain, and some of MAMEs exit mechanisms in the case of failure aren't terminating the application as expected, but instead crashing it in bizzare ways which cause the actual error message to be lost.
Also some of the built in helper tools have become ridiculously slow, again when Aaron started updating things to C++. Romident is now painfully slow, and it's nothing to do with the database size, ClrMAME can manage a database of equal size in a split second, it's simply because of a flaw in the code design. The debugger is also no longer showing registered save areas, which is annoying, again this seems to be related to something Aaron did to the debugger.
Newer versions also have a new cheat system Aaron did based around the debugger, unfortunately this is completely incompatible with the old one and lacks the user-friendly features which made finding cheats so easy in the past and required no technical knowledge to use. The system is 100% incompatible with cheats found with the old system, and was never properly finished.
There's also the MAMEUI situation, MAMEUI, which was always the most popular windows port, is now on life support, it barely works, Aarons core changes combined with a lack of developer interest / active developers have left it in a state where it barely works, people are still putting together compiles but each and every one is just a horribly unstable mess.
It's a shame, because at the same time a decent amount of work HAS been put into improving existing drivers, but there are too many cases of odd and unexpected performance issues due to poor code choices. Some argue it's when MAME got converted over to C++, which isn't strictly true, although I suspect a number of the issues are due to *poor use* of C++, which isn't an actual flaw in the language, but those using it.
It's a little unfair to blame Aaron entirely for this mess, but he was the core developer, working on the core code while everybody else worked on drivers, so naturally this is all going to be stuff he touched, but there are too many cases where he started changing core functionality, and left it in a far less functional state than it was in before, for no REAL benefit. This is greatly in contrast to some of the major changes made in the past, which did have a cost, but always resulted in genuine tangible improvements. Trying to code within the framework of MAME 0.37 for example is a nightmare, because you have to manually manage a whole lot more within a driver than you do today, there is far less of a difference in that regard when it comes to a build from 4 years ago vs. one from today, if anything some aspects have become more difficult again, mainly because of the multiple standards now present through the code tho.
There are benefits to the device system and things like that, and the C++ code is a lot cleaner and neater to work with, but there are just too many deep rooted niggling issues, and unfinished / unoptimized bits of core work for me to actually recommend the new versions as a stable emulation platform. The performance in some areas has become woeful, areas which really needed improvement have been ignored, and plenty of bugs have been introduced which simply haven't been fixed.
Naturally not all of this stuff applies if you're simply doing a port, but it's definitely worth considering if you're thinking about what MAME version to use, and unless there has been an actual fix you desperately wanted to see in a newer version I simply wouldn't bother.
The only real shining light is MESS, which has managed to more fully embrace the changes introduced from MAME, and still continue to improve, and is slowly catching up with some of the standalone console and computer emulators in spite of the problems, that said many of the issues present in the newer versions of MAME still rear their head there, which I fear could affect peoples opinions of the project.
You could say that I'm over-critical of some recent changes, but this is just my experience as both a developer and a user and while a lot of developers still seem to have rose-painted glasses over the current state of the project, and will leap to defend each and every change I don't see the point in doing that. It's going to take some big changes, and a significant pull factor to undo some of the damage, and while many will misattribute the recent problems to things like 'bloat' or 'too many mahjong games' it really has nothing to do with that, it's mainly down to shoddy, half implemented, unoptimized core changes.