Serial.printlnf() no longer working with F() macro from this afternoon

I suddenly failed to compile my project around 1pm this afternoon. I am sure the code is good. I located the error occurs at F() macro. As a simple test, just try to compile this program, you’ll see the error.

#include "application.h"

void setup()

void loop()

I’m wondering if they ungraded the cloud compiler today.

Can you check if the device that you :star: is using system firmware 0.6.1 ?

I just tried this building locally on release/v0.6.1-rc.2:

Here is the error:

/home/nrobinson/particle/community/2017-3-2/firmware/main.cpp: In function 'void setup()':
/home/nrobinson/particle/community/2017-3-2/firmware/main.cpp:6:26: error: no matching function for call to 'USBSerial::printlnf(const __FlashStringHelper*)'
/home/nrobinson/particle/community/2017-3-2/firmware/main.cpp:6:26: note: candidate is:
In file included from ../wiring/inc/spark_wiring_string.h:34:0,
                 from ../wiring/inc/spark_wiring_stream.h:30,
                 from ../wiring/inc/spark_wiring.h:38,
                 from ./inc/application.h:36,
                 from ./inc/Particle.h:5,
                 from /home/nrobinson/particle/community/2017-3-2/firmware/main.cpp:1:
../wiring/inc/spark_wiring_print.h:99:19: note: template<class ... Args> size_t Print::printlnf(const char*, Args ...)
     inline size_t printlnf(const char* format, Args... args)
../wiring/inc/spark_wiring_print.h:99:19: note:   template argument deduction/substitution failed:
/home/nrobinson/particle/community/2017-3-2/firmware/main.cpp:6:26: note:   cannot convert '(const __FlashStringHelper*)"Test"' (type 'const __FlashStringHelper*') to type 'const char*'
../build/ recipe for target '../build/target/user/platform-6-m/firmware/main.o' failed
make[2]: *** [../build/target/user/platform-6-m/firmware/main.o] Error 1
../../../build/ recipe for target 'user' failed
make[1]: *** [user] Error 2
../build/ recipe for target 'modules/photon/user-part' failed
make: *** [modules/photon/user-part] Error 2

release/v0.6.1-rc.1 works fine with no errors.

Sure, this is not the desired behaviour, but why would you need the F() macro anyway?
Are you writing code that should run on an AVR Arduino too?

It’s a P1. and the system firmware is 0.6.0. Program is compiled in cloud. Everything was good before yesterday afternoon.

Some modules of my program was borrowed from Arduino projects in the first place. I’ve been updating the program from a year. Everything was good, until…

I just removed all F() and compiled in the could. Errors gone.