diff --git a/src/if_perl.xs b/src/if_perl.xs
index 3af309a..015189c 100644
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -195,7 +195,9 @@
 #  define Perl_croak_xs_usage dll_Perl_croak_xs_usage
 # endif
 # ifndef PROTO
-#  define Perl_croak_nocontext dll_Perl_croak_nocontext
+#  ifdef PERL_IMPLICIT_CONTEXT
+#   define Perl_croak_nocontext dll_Perl_croak_nocontext
+#  endif
 #  define Perl_call_argv dll_Perl_call_argv
 #  define Perl_call_pv dll_Perl_call_pv
 #  define Perl_eval_sv dll_Perl_eval_sv
@@ -345,7 +347,9 @@
 						    __attribute__noreturn__;
 #  endif
 # endif
+# ifdef PERL_IMPLICIT_CONTEXT
 static void (*Perl_croak_nocontext)(const char*, ...) __attribute__noreturn__;
+# endif
 static I32 (*Perl_dowantarray)(pTHX);
 static void (*Perl_free_tmps)(pTHX);
 static HV* (*Perl_gv_stashpv)(pTHX_ const char*, I32);
diff --git a/src/if_ruby.c b/src/if_ruby.c
index 9b6d388..e989c01 100644
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -99,6 +99,12 @@
 # define rb_ary_detransient rb_ary_detransient_stub
 #endif
 
+// On macOS pre-installed Ruby defines "SIZEOF_TIME_T" as "SIZEOF_LONG" so it
+// conflicts with the definition in config.h then causes macro-redifned warning.
+#ifdef SIZEOF_TIME_T
+# undef SIZEOF_TIME_T
+#endif
+
 #include <ruby.h>
 #if RUBY_VERSION >= 19
 # include <ruby/encoding.h>
diff --git a/src/libvterm/t/harness.c b/src/libvterm/t/harness.c
index ccb2b39..fed5844 100644
--- a/src/libvterm/t/harness.c
+++ b/src/libvterm/t/harness.c
@@ -67,7 +67,8 @@
 
 static int parser_text(const char bytes[], size_t len, void *user)
 {
-  int i;
+  size_t i;
+  (void)user;
 
   printf("text ");
   for(i = 0; i < len; i++) {
@@ -83,6 +84,7 @@
 
 static int parser_control(unsigned char control, void *user)
 {
+  (void)user;
   printf("control %02x\n", control);
 
   return 1;
@@ -90,7 +92,8 @@
 
 static int parser_escape(const char bytes[], size_t len, void *user)
 {
-  int i;
+  size_t i;
+  (void)user;
 
   if(bytes[0] >= 0x20 && bytes[0] < 0x30) {
     if(len < 2)
@@ -112,6 +115,7 @@
 static int parser_csi(const char *leader, const long args[], int argcount, const char *intermed, char command, void *user)
 {
   int i;
+  (void)user;
   printf("csi %02x", command);
 
   if(leader && leader[0]) {
@@ -142,7 +146,9 @@
 
 static int parser_osc(const char *command, size_t cmdlen, void *user)
 {
-  int i;
+  size_t i;
+  (void)user;
+
   printf("osc ");
   for(i = 0; i < cmdlen; i++)
     printf("%02x", command[i]);
@@ -153,7 +159,9 @@
 
 static int parser_dcs(const char *command, size_t cmdlen, void *user)
 {
-  int i;
+  size_t i;
+  (void)user;
+
   printf("dcs ");
   for(i = 0; i < cmdlen; i++)
     printf("%02x", command[i]);
@@ -178,6 +186,7 @@
 static VTermPos state_pos;
 static int movecursor(VTermPos pos, VTermPos oldpos, int visible, void *user)
 {
+  (void)oldpos, (void)visible, (void)user;
   state_pos = pos;
 
   if(want_movecursor)
@@ -189,6 +198,7 @@
 static int want_scrollrect = 0;
 static int scrollrect(VTermRect rect, int downward, int rightward, void *user)
 {
+  (void)user;
   if(!want_scrollrect)
     return 0;
 
@@ -202,6 +212,7 @@
 static int want_moverect = 0;
 static int moverect(VTermRect dest, VTermRect src, void *user)
 {
+  (void)user;
   if(!want_moverect)
     return 0;
 
@@ -215,6 +226,7 @@
 static int want_settermprop = 0;
 static int settermprop(VTermProp prop, VTermValue *val, void *user)
 {
+  (void)user;
   VTermValueType type;
   if(!want_settermprop)
     return 1;
@@ -247,6 +259,7 @@
 static int state_putglyph(VTermGlyphInfo *info, VTermPos pos, void *user)
 {
   int i;
+  (void)user;
   if(!want_state_putglyph)
     return 1;
 
@@ -268,6 +281,7 @@
 static int want_state_erase = 0;
 static int state_erase(VTermRect rect, int selective, void *user)
 {
+  (void)user;
   if(!want_state_erase)
     return 1;
 
@@ -291,6 +305,7 @@
 } state_pen;
 static int state_setpenattr(VTermAttr attr, VTermValue *val, void *user)
 {
+  (void)user;
   switch(attr) {
   case VTERM_ATTR_BOLD:
     state_pen.bold = val->boolean;
@@ -329,6 +344,7 @@
 
 static int state_setlineinfo(int row, const VTermLineInfo *newinfo, const VTermLineInfo *oldinfo, void *user)
 {
+  (void)row, (void)newinfo, (void)oldinfo, (void)user;
   return 1;
 }
 
@@ -350,6 +366,7 @@
 static int want_screen_damage_cells = 0;
 static int screen_damage(VTermRect rect, void *user)
 {
+  (void)user;
   if(!want_screen_damage)
     return 1;
 
@@ -404,6 +421,7 @@
 {
   int eol;
   int c;
+  (void)user;
 
   if(!want_screen_scrollback)
     return 1;
@@ -423,6 +441,7 @@
 static int screen_sb_popline(int cols, VTermScreenCell *cells, void *user)
 {
   int col;
+  (void)user;
 
   if(!want_screen_scrollback)
     return 0;
@@ -456,6 +475,7 @@
 {
   char line[1024] = {0};
   int flag;
+  (void)argc, (void)argv;
 
   int err;
 
@@ -926,7 +946,7 @@
 
     outlen = vterm_output_get_buffer_current(vt);
     if(outlen > 0) {
-      int i;
+      size_t i;
       char outbuff[1024];
       vterm_output_read(vt, outbuff, outlen);
 
diff --git a/src/version.c b/src/version.c
index be24594..b170d4a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    541,
+/**/
     540,
 /**/
     539,
