Bug#989939: unblock: vala/0.48.18-1
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: ricotz@ubuntu.com
Please unblock package vala
Vala 0.48.18
============
* Various improvements and bug fixes:
- codegen:
+ GArray, GByteArray and GPtrArray are reference counted
+ Replace wrongly hard coded usage of G_OBJECT_GET_CLASS
+ Mark entry point method implementation "_vala_main" as static
+ Improve check for GLib.Source derived classes
- vala: Parameter following params-array parameter is not allowed
* Bindings:
- Update GLib bindings to 2.66 - Sync GLib symbol additions with 0.50.9
- glib-2.0: Add missing has_typedef attributes on SourceFuncs delegates
- pango: Mark language parameter of AttrIterator.get_font() as out
* Various improvements and bug fixes:
- codegen:
+ Apply gconstpointer to gpointer cast to GenericType only
+ Fix access to captured generics in async method of interfaces (2)
+ Use if-clause for is_in_destructor() condition to be more clear
+ Add missing "_return" label and "_inner_error*_" declaration in dtors
+ Don't use G_GNUC_INTERNAL on implicit type specific fields
- vala:
+ length-type of arrays must not be nullable
+ Report a warning for unhandled errors in destructors
- parser:
+ Minor semantic checks to improve error messages
+ Allow empty member-initializer and accept trailing comma
+ Include INTERR token in source_reference of parsed types
[ Reason ]
Vala 0.48.x series is a Long-Term support version and receives important bug
fixes and binding fixes.
https://gitlab.gnome.org/GNOME/vala/-/issues/537
https://gitlab.gnome.org/GNOME/vala/-/issues/1176
https://gitlab.gnome.org/GNOME/vala/-/issues/1178
[ Impact ]
Vala 0.48.x gained updated bindings for glib 2.66 which were backported from
0.50.9.
Currently vala 0.48.17-1 provides bindings for glib 2.64 only.
[ Tests ]
The vala 0.48.x series is constantly used by current package set of Debian
testing.
The upstream test suite is extended with every release.
http://ci.vala-project.org:8010/builders/vala-0.48/builds/49
[ Risks ]
Vala is a compiler and affects every reverse-dependency.
[ Checklist ]
[X] all changes are documented in the d/changelog
[X] I reviewed all changes and I approve them
[X] There are no packaging changes other than the changelog itself
[X] attach debdiff against the package in testing
[ Other info ]
https://gitlab.gnome.org/GNOME/vala/-/compare/7a59191b7fc5d4c7b77f42ab0e7806011a5c71dd...5587fe63a9489cdcb2fdd91a820c34e54ddbe3e0
unblock vala/0.48.18-1
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index 7d06fde1f..e24394863 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -1113,8 +1113,6 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
if (f.is_private_symbol ()) {
flock.modifiers = CCodeModifiers.STATIC;
- } else if (context.hide_internal && f.is_internal_symbol ()) {
- flock.modifiers = CCodeModifiers.INTERNAL;
} else {
flock.modifiers = CCodeModifiers.EXTERN;
}
@@ -1132,8 +1130,6 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
cdecl.add_declarator (new CCodeVariableDeclarator (get_variable_array_length_cname (f, dim)));
if (f.is_private_symbol ()) {
cdecl.modifiers = CCodeModifiers.STATIC;
- } else if (context.hide_internal && f.is_internal_symbol ()) {
- cdecl.modifiers = CCodeModifiers.INTERNAL;
} else {
cdecl.modifiers = CCodeModifiers.EXTERN;
}
@@ -1149,8 +1145,6 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
cdecl.add_declarator (new CCodeVariableDeclarator (get_ccode_delegate_target_name (f)));
if (f.is_private_symbol ()) {
cdecl.modifiers = CCodeModifiers.STATIC;
- } else if (context.hide_internal && f.is_internal_symbol ()) {
- cdecl.modifiers = CCodeModifiers.INTERNAL;
} else {
cdecl.modifiers = CCodeModifiers.EXTERN;
}
@@ -1161,8 +1155,6 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
cdecl.add_declarator (new CCodeVariableDeclarator (get_ccode_delegate_target_destroy_notify_name (f)));
if (f.is_private_symbol ()) {
cdecl.modifiers = CCodeModifiers.STATIC;
- } else if (context.hide_internal && f.is_internal_symbol ()) {
- cdecl.modifiers = CCodeModifiers.INTERNAL;
} else {
cdecl.modifiers = CCodeModifiers.EXTERN;
}
@@ -2166,11 +2158,15 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
unowned DataType? this_type = get_this_type ();
if (this_type != null && (!in_creation_method_with_chainup || current_method.body != b)) {
- var ref_call = new CCodeFunctionCall (get_dup_func_expression (this_type, b.source_reference));
- ref_call.add_argument (get_this_cexpression ());
-
- // never increase reference count for self in finalizers to avoid infinite recursion on following unref
- var instance = (is_in_destructor () ? (CCodeExpression) new CCodeIdentifier ("self") : (CCodeExpression) ref_call);
+ CCodeExpression instance;
+ if (is_in_destructor ()) {
+ // never increase reference count for self in finalizers to avoid infinite recursion on following unref
+ instance = new CCodeIdentifier ("self");
+ } else {
+ var ref_call = new CCodeFunctionCall (get_dup_func_expression (this_type, b.source_reference));
+ ref_call.add_argument (get_this_cexpression ());
+ instance = ref_call;
+ }
ccode.add_assignment (new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (block_id)), "self"), instance);
}
@@ -2912,9 +2908,9 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
string method_name = "get_%s_dup_func".printf (type_parameter.name.ascii_down ());
var cast_self = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (iface)));
- cast_self.add_argument (new CCodeIdentifier ("self"));
+ cast_self.add_argument (get_this_cexpression ());
var function_call = new CCodeFunctionCall (new CCodeMemberAccess.pointer (cast_self, method_name));
- function_call.add_argument (new CCodeIdentifier ("self"));
+ function_call.add_argument (get_this_cexpression ());
return function_call;
}
@@ -3759,11 +3755,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
var ccomma = new CCodeCommaExpression ();
if (context.profile == Profile.GOBJECT
- && type.type_symbol != null && !is_reference_counting (type.type_symbol) &&
- (type.type_symbol.is_subtype_of (gstringbuilder_type)
- || type.type_symbol.is_subtype_of (garray_type)
- || type.type_symbol.is_subtype_of (gbytearray_type)
- || type.type_symbol.is_subtype_of (gptrarray_type))) {
+ && type.type_symbol != null && !is_reference_counting (type.type_symbol)
+ && type.type_symbol.is_subtype_of (gstringbuilder_type)) {
ccall.add_argument (new CCodeConstant ("TRUE"));
} else if (context.profile == Profile.GOBJECT
&& type.type_symbol == gthreadpool_type) {
@@ -4191,7 +4184,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
CCodeExpression klass;
if (get_this_type () != null) {
- var k = new CCodeFunctionCall (new CCodeIdentifier ("G_OBJECT_GET_CLASS"));
+ var k = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function ((Class) parent)));
k.add_argument (new CCodeIdentifier ("self"));
klass = k;
} else {
@@ -4708,15 +4701,17 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
}
CCodeExpression cifnull;
- if (type.type_symbol != null) {
- cifnull = new CCodeConstant ("NULL");
- } else {
+ if (type is GenericType) {
// the value might be non-null even when the dup function is null,
// so we may not just use NULL for type parameters
// cast from gconstpointer to gpointer as methods in
// generic classes may not return gconstpointer
cifnull = new CCodeCastExpression (cexpr, get_ccode_name (pointer_type));
+ } else if (type.type_symbol != null) {
+ cifnull = new CCodeConstant ("NULL");
+ } else {
+ cifnull = cexpr;
}
if (is_ref_function_void (type)) {
diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala
index 7b22c9f23..e18e4cb79 100644
--- a/codegen/valaccodememberaccessmodule.vala
+++ b/codegen/valaccodememberaccessmodule.vala
@@ -715,13 +715,13 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
klass = new CCodeIdentifier ("klass");
} else {
// Accessing the field from within an instance method
- var k = new CCodeFunctionCall (new CCodeIdentifier ("G_OBJECT_GET_CLASS"));
+ var k = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (cl)));
k.add_argument (new CCodeIdentifier ("self"));
klass = k;
}
} else {
// Accessing the field of an instance
- var k = new CCodeFunctionCall (new CCodeIdentifier ("G_OBJECT_GET_CLASS"));
+ var k = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (cl)));
k.add_argument (get_cvalue_ (instance));
klass = k;
}
diff --git a/codegen/valaccodemethodcallmodule.vala b/codegen/valaccodemethodcallmodule.vala
index 42a7fcaa0..3b4d03b24 100644
--- a/codegen/valaccodemethodcallmodule.vala
+++ b/codegen/valaccodemethodcallmodule.vala
@@ -202,7 +202,7 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
type_param_index++;
}
}
- } else if (current_class.base_class == gsource_type) {
+ } else if (current_class.is_subtype_of (gsource_type)) {
// g_source_new
string class_prefix = get_ccode_lower_case_name (current_class);
@@ -289,13 +289,13 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
klass = new CCodeIdentifier ("klass");
} else {
// Accessing the method from within an instance method
- var k = new CCodeFunctionCall (new CCodeIdentifier ("G_OBJECT_GET_CLASS"));
+ var k = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (cl)));
k.add_argument (get_this_cexpression ());
klass = k;
}
} else {
// Accessing the method of an instance
- var k = new CCodeFunctionCall (new CCodeIdentifier ("G_OBJECT_GET_CLASS"));
+ var k = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (cl)));
k.add_argument (get_cvalue (ma.inner));
klass = k;
}
@@ -979,7 +979,7 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
}
}
- if (m is CreationMethod && m.parent_symbol is Class && ((current_class.is_compact && current_class.base_class != null) || current_class.base_class == gsource_type)) {
+ if (m is CreationMethod && m.parent_symbol is Class && ((current_class.is_compact && current_class.base_class != null) || current_class.is_subtype_of (gsource_type))) {
var cinitcall = new CCodeFunctionCall (new CCodeIdentifier ("%s_instance_init".printf (get_ccode_lower_case_name (current_class, null))));
cinitcall.add_argument (get_this_cexpression ());
if (!current_class.is_compact) {
diff --git a/codegen/valaccodemethodmodule.vala b/codegen/valaccodemethodmodule.vala
index f29463ea4..bb0a96684 100644
--- a/codegen/valaccodemethodmodule.vala
+++ b/codegen/valaccodemethodmodule.vala
@@ -177,6 +177,10 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule {
function.modifiers |= CCodeModifiers.INTERNAL;
}
+ if (m.entry_point) {
+ function.modifiers |= CCodeModifiers.STATIC;
+ }
+
if (m.version.deprecated) {
if (context.profile == Profile.GOBJECT) {
decl_space.add_include ("glib.h");
@@ -423,6 +427,10 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule {
function.modifiers |= CCodeModifiers.INLINE;
}
+ if (m.entry_point) {
+ function.modifiers |= CCodeModifiers.STATIC;
+ }
+
var cparam_map = new HashMap<int,CCodeParameter> (direct_hash, direct_equal);
generate_cparameters (m, cfile, cparam_map, function);
diff --git a/codegen/valagtypemodule.vala b/codegen/valagtypemodule.vala
index 5c79f1ef4..43e6e153e 100644
--- a/codegen/valagtypemodule.vala
+++ b/codegen/valagtypemodule.vala
@@ -63,7 +63,7 @@ public class Vala.GTypeModule : GErrorModule {
bool is_gtypeinstance = !cl.is_compact;
bool is_fundamental = is_gtypeinstance && cl.base_class == null;
- bool is_gsource = cl.base_class == gsource_type;
+ bool is_gsource = cl.is_subtype_of (gsource_type);
if (is_gtypeinstance) {
decl_space.add_include ("glib-object.h");
@@ -628,7 +628,7 @@ public class Vala.GTypeModule : GErrorModule {
begin_class_finalize_function (cl);
begin_finalize_function (cl);
} else {
- if (cl.is_compact || cl.base_class == null || cl.base_class == gsource_type) {
+ if (cl.is_compact || cl.base_class == null || cl.is_subtype_of (gsource_type)) {
begin_instance_init_function (cl);
begin_finalize_function (cl);
}
@@ -768,7 +768,7 @@ public class Vala.GTypeModule : GErrorModule {
cfile.add_function (unref_fun);
}
} else {
- if (cl.is_compact || cl.base_class == null || cl.base_class == gsource_type) {
+ if (cl.is_compact || cl.base_class == null || cl.is_subtype_of (gsource_type)) {
add_instance_init_function (cl);
add_finalize_function (cl);
}
@@ -1610,7 +1610,7 @@ public class Vala.GTypeModule : GErrorModule {
push_function (func);
- bool is_gsource = cl.base_class == gsource_type;
+ bool is_gsource = cl.is_subtype_of (gsource_type);
if (cl.is_compact) {
// Add declaration, since the instance_init function is explicitly called
@@ -1696,6 +1696,16 @@ public class Vala.GTypeModule : GErrorModule {
if (cl.static_destructor != null) {
cl.static_destructor.body.emit (this);
+
+ if (current_method_inner_error) {
+ ccode.add_declaration ("GError*", new CCodeVariableDeclarator.zero ("_inner_error%d_".printf (current_inner_error_id), new CCodeConstant ("NULL")));
+ }
+
+ if (current_method_return) {
+ // support return statements in destructors
+ ccode.add_label ("_return");
+ ccode.add_statement (new CCodeEmptyStatement ());
+ }
}
pop_context ();
@@ -1719,6 +1729,16 @@ public class Vala.GTypeModule : GErrorModule {
if (cl.class_destructor != null) {
cl.class_destructor.body.emit (this);
+
+ if (current_method_inner_error) {
+ ccode.add_declaration ("GError*", new CCodeVariableDeclarator.zero ("_inner_error%d_".printf (current_inner_error_id), new CCodeConstant ("NULL")));
+ }
+
+ if (current_method_return) {
+ // support return statements in destructors
+ ccode.add_label ("_return");
+ ccode.add_statement (new CCodeEmptyStatement ());
+ }
}
pop_context ();
@@ -1736,7 +1756,7 @@ public class Vala.GTypeModule : GErrorModule {
private void begin_finalize_function (Class cl) {
push_context (instance_finalize_context);
- bool is_gsource = cl.base_class == gsource_type;
+ bool is_gsource = cl.is_subtype_of (gsource_type);
if (!cl.is_compact || is_gsource) {
var fundamental_class = cl;
@@ -1830,7 +1850,7 @@ public class Vala.GTypeModule : GErrorModule {
pop_context ();
cfile.add_function (instance_finalize_context.ccode);
- } else if (cl.base_class == gsource_type) {
+ } else if (cl.is_subtype_of (gsource_type)) {
cfile.add_function (instance_finalize_context.ccode);
}
}
diff --git a/vala/valaarraycreationexpression.vala b/vala/valaarraycreationexpression.vala
index 5e0f46172..c16808c61 100644
--- a/vala/valaarraycreationexpression.vala
+++ b/vala/valaarraycreationexpression.vala
@@ -258,7 +258,7 @@ public class Vala.ArrayCreationExpression : Expression {
length_type = context.analyzer.int_type.copy ();
} else {
length_type.check (context);
- if (!(length_type is IntegerType)) {
+ if (!(length_type is IntegerType) || length_type.nullable) {
error = true;
Report.error (length_type.source_reference, "Expected integer type as length type of array");
}
diff --git a/vala/valaarraytype.vala b/vala/valaarraytype.vala
index 7fff66b04..50f40721b 100644
--- a/vala/valaarraytype.vala
+++ b/vala/valaarraytype.vala
@@ -317,7 +317,7 @@ public class Vala.ArrayType : ReferenceType {
length_type = context.analyzer.int_type.copy ();
} else {
length_type.check (context);
- if (!(length_type is IntegerType)) {
+ if (!(length_type is IntegerType) || length_type.nullable) {
error = true;
Report.error (length_type.source_reference, "Expected integer type as length type of array");
return false;
diff --git a/vala/valaclass.vala b/vala/valaclass.vala
index 3fffdb352..f6ee91e59 100644
--- a/vala/valaclass.vala
+++ b/vala/valaclass.vala
@@ -702,7 +702,7 @@ public class Vala.Class : ObjectTypeSymbol {
}
}
- if (!external && !external_package && base_class != null && base_class != context.analyzer.gsource_type) {
+ if (!external && !external_package && base_class != null && !base_class.is_subtype_of (context.analyzer.gsource_type)) {
foreach (Field f in get_fields ()) {
if (f.binding == MemberBinding.INSTANCE) {
error = true;
diff --git a/vala/valadestructor.vala b/vala/valadestructor.vala
index 61797ea22..a04849673 100644
--- a/vala/valadestructor.vala
+++ b/vala/valadestructor.vala
@@ -77,6 +77,16 @@ public class Vala.Destructor : Subroutine {
body.check (context);
}
+ if (body != null && !body.error) {
+ var body_errors = new ArrayList<DataType> ();
+ body.get_error_types (body_errors);
+ foreach (DataType body_error_type in body_errors) {
+ if (!((ErrorType) body_error_type).dynamic_error) {
+ Report.warning (body_error_type.source_reference, "unhandled error `%s'".printf (body_error_type.to_string()));
+ }
+ }
+ }
+
context.analyzer.current_symbol = parent_symbol;
return !error;
diff --git a/vala/valamethod.vala b/vala/valamethod.vala
index 0bed502b9..9c34c7ad0 100644
--- a/vala/valamethod.vala
+++ b/vala/valamethod.vala
@@ -841,6 +841,7 @@ public class Vala.Method : Subroutine, Callable {
}
var optional_param = false;
+ var params_array_param = false;
foreach (Parameter param in parameters) {
if (!param.check (context)) {
error = true;
@@ -865,6 +866,11 @@ public class Vala.Method : Subroutine, Callable {
optional_param = true;
}
+ if (params_array_param) {
+ Report.error (param.source_reference, "parameter follows params-array parameter");
+ } else if (param.params_array) {
+ params_array_param = true;
+ }
// Add local variable to provide access to params arrays which will be constructed out of the given va-args
if (param.params_array && body != null) {
if (params_array_var != null) {
diff --git a/vala/valaparser.vala b/vala/valaparser.vala
index e64591c73..1424d3e2c 100644
--- a/vala/valaparser.vala
+++ b/vala/valaparser.vala
@@ -538,6 +538,7 @@ public class Vala.Parser : CodeVisitor {
if (!(type is PointerType)) {
type.nullable = accept (TokenType.INTERR);
+ type.source_reference = get_src (begin);
}
}
@@ -1038,9 +1039,13 @@ public class Vala.Parser : CodeVisitor {
List<MemberInitializer> parse_object_initializer () throws ParseError {
var list = new ArrayList<MemberInitializer> ();
if (accept (TokenType.OPEN_BRACE)) {
- do {
+ while (current () != TokenType.CLOSE_BRACE) {
list.add (parse_member_initializer ());
- } while (accept (TokenType.COMMA));
+
+ if (!accept (TokenType.COMMA)) {
+ break;
+ }
+ }
expect (TokenType.CLOSE_BRACE);
}
return list;
@@ -2384,12 +2389,18 @@ public class Vala.Parser : CodeVisitor {
case TokenType.CONSTRUCT:
if (context.profile == Profile.GOBJECT) {
rollback (begin);
+ if (!(parent is TypeSymbol)) {
+ throw new ParseError.SYNTAX ("unexpected `construct' declaration");
+ }
parse_constructor_declaration (parent, attrs);
return;
}
break;
case TokenType.TILDE:
rollback (begin);
+ if (!(parent is TypeSymbol)) {
+ throw new ParseError.SYNTAX ("unexpected `destructor' declaration");
+ }
parse_destructor_declaration (parent, attrs);
return;
case TokenType.OPEN_BRACE:
@@ -2468,6 +2479,9 @@ public class Vala.Parser : CodeVisitor {
break;
case TokenType.OPEN_PARENS:
rollback (begin);
+ if (!(parent is TypeSymbol)) {
+ throw new ParseError.SYNTAX ("unexpected `constructor' declaration");
+ }
parse_creation_method_declaration (parent, attrs);
return;
default:
@@ -2480,6 +2494,9 @@ public class Vala.Parser : CodeVisitor {
parse_delegate_declaration (parent, attrs);
return;
case TokenType.SIGNAL:
+ if (!(parent is ObjectTypeSymbol)) {
+ throw new ParseError.SYNTAX ("unexpected `signal' declaration");
+ }
parse_signal_declaration (parent, attrs);
return;
default:
@@ -2500,6 +2517,9 @@ public class Vala.Parser : CodeVisitor {
case TokenType.OPEN_BRACE:
case TokenType.THROWS:
rollback (begin);
+ if (!(parent is TypeSymbol)) {
+ throw new ParseError.SYNTAX ("unexpected `property' declaration");
+ }
parse_property_declaration (parent, attrs);
return;
default:
diff --git a/vapi/gio-2.0.vapi b/vapi/gio-2.0.vapi
index 0c60a0a0c..2a30d4ff0 100644
--- a/vapi/gio-2.0.vapi
+++ b/vapi/gio-2.0.vapi
@@ -3020,6 +3020,9 @@ namespace GLib {
protected TlsConnection ();
public bool emit_accept_certificate (GLib.TlsCertificate peer_cert, GLib.TlsCertificateFlags errors);
public unowned GLib.TlsCertificate? get_certificate ();
+ [CCode (vfunc_name = "get_binding_data")]
+ [Version (since = "2.66")]
+ public virtual bool get_channel_binding_data (GLib.TlsChannelBindingType type, out unowned GLib.ByteArray data) throws GLib.TlsChannelBindingError;
[Version (since = "2.30")]
public unowned GLib.TlsDatabase? get_database ();
[Version (since = "2.30")]
@@ -3515,6 +3518,9 @@ namespace GLib {
public async bool close_async (int io_priority = GLib.Priority.DEFAULT, GLib.Cancellable? cancellable = null) throws GLib.Error;
public bool emit_accept_certificate (GLib.TlsCertificate peer_cert, GLib.TlsCertificateFlags errors);
public unowned GLib.TlsCertificate? get_certificate ();
+ [CCode (vfunc_name = "get_binding_data")]
+ [Version (since = "2.66")]
+ public virtual bool get_channel_binding_data (GLib.TlsChannelBindingType type, out unowned GLib.ByteArray data) throws GLib.TlsChannelBindingError;
public unowned GLib.TlsDatabase? get_database ();
public unowned GLib.TlsInteraction? get_interaction ();
[Version (since = "2.60")]
@@ -4148,7 +4154,8 @@ namespace GLib {
FREEBSD_CMSGCRED,
OPENBSD_SOCKPEERCRED,
SOLARIS_UCRED,
- NETBSD_UNPCBID
+ NETBSD_UNPCBID,
+ APPLE_XUCRED
}
[CCode (cheader_filename = "gio/gio.h", cprefix = "G_DBUS_CALL_FLAGS_", type_id = "g_dbus_call_flags_get_type ()")]
[Flags]
@@ -4627,6 +4634,12 @@ namespace GLib {
public enum TlsCertificateRequestFlags {
NONE
}
+ [CCode (cheader_filename = "gio/gio.h", cprefix = "G_TLS_CHANNEL_BINDING_TLS_", type_id = "g_tls_channel_binding_type_get_type ()")]
+ [Version (since = "2.66")]
+ public enum TlsChannelBindingType {
+ UNIQUE,
+ SERVER_END_POINT
+ }
[CCode (cheader_filename = "gio/gio.h", cprefix = "G_TLS_DATABASE_LOOKUP_", type_id = "g_tls_database_lookup_flags_get_type ()")]
[Version (since = "2.30")]
public enum TlsDatabaseLookupFlags {
@@ -4828,6 +4841,15 @@ namespace GLib {
[CCode (cheader_filename = "gio/gio.h")]
public static GLib.Quark quark ();
}
+ [CCode (cheader_filename = "gio/gio.h", cprefix = "G_TLS_CHANNEL_BINDING_ERROR_")]
+ [Version (since = "2.66")]
+ public errordomain TlsChannelBindingError {
+ NOT_IMPLEMENTED,
+ INVALID_STATE,
+ NOT_AVAILABLE,
+ NOT_SUPPORTED,
+ GENERAL_ERROR
+ }
[CCode (cheader_filename = "gio/gio.h", cprefix = "G_TLS_ERROR_")]
[Version (since = "2.28")]
public errordomain TlsError {
diff --git a/vapi/glib-2.0.vapi b/vapi/glib-2.0.vapi
index f389d2916..125d57805 100644
--- a/vapi/glib-2.0.vapi
+++ b/vapi/glib-2.0.vapi
@@ -2085,13 +2085,13 @@ namespace GLib {
[CCode (has_target = false)]
public delegate void SourceDummyMarshal ();
- [CCode (has_target = false)]
+ [CCode (has_target = false, has_typedef = false)]
public delegate bool SourcePrepareFunc (Source source, out int timeout_);
- [CCode (has_target = false)]
+ [CCode (has_target = false, has_typedef = false)]
public delegate bool SourceCheckFunc (Source source);
- [CCode (has_target = false)]
+ [CCode (has_target = false, has_typedef = false)]
public delegate bool SourceDispatchFunc (Source source, SourceFunc? _callback);
- [CCode (has_target = false)]
+ [CCode (has_target = false, has_typedef = false)]
public delegate void SourceFinalizeFunc (Source source);
[CCode (has_type_id = false)]
@@ -3863,6 +3863,8 @@ namespace GLib {
public static bool get_contents (string filename, out string contents, out size_t length = null) throws FileError;
[Version (since = "2.8")]
public static bool set_contents (string filename, string contents, ssize_t length = -1) throws FileError;
+ [Version (since = "2.66")]
+ public static bool set_contents_full (string filename, string contents, ssize_t length = -1, FileSetContentsFlags flags = 0, int mode = 0666) throws FileError;
[CCode (cname = "g_file_get_contents")]
public static bool get_data (string filename, [CCode (type = "gchar**", array_length_type = "size_t")] out uint8[] contents) throws FileError;
[CCode (cname = "g_file_set_contents")]
@@ -3904,6 +3906,16 @@ namespace GLib {
public static bool close_checked (int fd) throws FileError;
}
+ [Flags]
+ [Version (since = "2.66")]
+ [CCode (cprefix = "G_FILE_SET_CONTENTS_", has_type_id = false)]
+ public enum FileSetContentsFlags {
+ NONE,
+ CONSISTENT,
+ DURABLE,
+ ONLY_EXISTING
+ }
+
[CCode (cname = "GStatBuf", cheader_filename = "glib/gstdio.h", has_type_id = false)]
public struct Stat {
public time_t st_atime;
@@ -3967,26 +3979,146 @@ namespace GLib {
/* URI Functions */
- namespace Uri {
+ [Compact]
+ [CCode (ref_function = "g_uri_ref", unref_function = "g_uri_unref", type_id = "G_TYPE_URI")]
+ public class Uri {
+ [Version (since = "2.16")]
public const string RESERVED_CHARS_ALLOWED_IN_PATH;
+ [Version (since = "2.16")]
public const string RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT;
+ [Version (since = "2.16")]
public const string RESERVED_CHARS_ALLOWED_IN_USERINFO;
+ [Version (since = "2.16")]
public const string RESERVED_CHARS_GENERIC_DELIMITERS;
+ [Version (since = "2.16")]
public const string RESERVED_CHARS_SUBCOMPONENT_DELIMITERS;
+ [Version (since = "2.66")]
+ public static bool split (string uri_string, UriFlags flags, out string? scheme, out string? userinfo, out string? host, out int port, out string? path, out string? query, out string? fragment) throws UriError;
+ [Version (since = "2.66")]
+ public static bool split_with_user (string uri_string, UriFlags flags, out string? scheme, out string? user, out string? password, out string? auth_params, out string? host, out int port, out string? path, out string? query, out string? fragment) throws UriError;
+ [Version (since = "2.66")]
+ public static bool split_network (string uri_string, UriFlags flags, out string? scheme, out string? host, out int port) throws UriError;
+ [Version (since = "2.66")]
+ public static bool is_valid (string uri_string, UriFlags flags) throws UriError;
+ [Version (since = "2.66")]
+ public static string join (UriFlags flags, string scheme, string? userinfo, string? host, int port, string path, string? query, string? fragment);
+ [Version (since = "2.66")]
+ public static string join_with_user (UriFlags flags, string scheme, string? user, string? password, string? auth_params, string? host, int port, string path, string? query, string? fragment);
+
+ [Version (since = "2.66")]
+ public static Uri parse (string uri_string, UriFlags flags) throws UriError;
+ [Version (since = "2.66")]
+ public static Uri parse_relative (Uri? base_uri, string uri_string, UriFlags flags) throws UriError;
+ [Version (since = "2.66")]
+ public static string resolve_relative (string base_uri_string, string uri_string, UriFlags flags) throws UriError;
+ [Version (since = "2.66")]
+ public static Uri build (UriFlags flags, string scheme, string? userinfo, string? host, int port, string path, string? query, string? fragment);
+ [Version (since = "2.66")]
+ public static Uri build_with_user (UriFlags flags, string scheme, string? user, string? password, string? auth_params, string? host, int port, string path, string? query, string? fragment);
+
+ [Version (since = "2.66")]
+ public unowned string get_scheme ();
+ [Version (since = "2.66")]
+ public unowned string? get_userinfo ();
+ [Version (since = "2.66")]
+ public unowned string? get_user ();
+ [Version (since = "2.66")]
+ public unowned string? get_password ();
+ [Version (since = "2.66")]
+ public unowned string? get_auth_params ();
+ [Version (since = "2.66")]
+ public unowned string? get_host ();
+ [Version (since = "2.66")]
+ public int get_port ();
+ [Version (since = "2.66")]
+ public unowned string get_path ();
+ [Version (since = "2.66")]
+ public unowned string? get_query ();
+ [Version (since = "2.66")]
+ public unowned string? get_fragment ();
+ [Version (since = "2.66")]
+ public UriFlags get_flags ();
+
+ [Version (since = "2.66")]
+ public static HashTable<string,string> parse_params (string uri, size_t length = -1, string separators = "&;", UriParamsFlags flags = 0) throws UriError;
[Version (since = "2.16")]
public static string? parse_scheme (string uri);
+ [Version (since = "2.66")]
+ public static unowned string? peek_scheme (string uri);
[Version (since = "2.16")]
public static string escape_string (string unescaped, string? reserved_chars_allowed = null, bool allow_utf8 = true);
[Version (since = "2.16")]
public static string? unescape_string (string escaped_string, string? illegal_characters = null);
[Version (since = "2.16")]
public static string? unescape_segment (string? escaped_string, string? escaped_string_end, string? illegal_characters = null);
+ [Version (since = "2.66")]
+ public static Bytes? unescape_bytes (string escaped_string, size_t length = -1, string? illegal_characters = null) throws UriError;
+ [Version (since = "2.66")]
+ public static string? escape_bytes ([CCode (array_length_type = "gsize")] uint8[] unescaped, string? reserved_chars_allowed = null);
[Version (since = "2.6")]
[CCode (array_length = false, array_null_terminated = true)]
public static string[] list_extract_uris (string uri_list);
}
+ [Version (since = "2.66")]
+ public errordomain UriError {
+ FAILED,
+ BAD_SCHEME,
+ BAD_USER,
+ BAD_PASSWORD,
+ BAD_AUTH_PARAMS,
+ BAD_HOST,
+ BAD_PORT,
+ BAD_PATH,
+ BAD_QUERY,
+ BAD_FRAGMENT;
+ public static GLib.Quark quark ();
+ }
+
+ [Flags]
+ [Version (since = "2.66")]
+ [CCode (cprefix = "G_URI_FLAGS_", has_type_id = false)]
+ public enum UriFlags {
+ NONE,
+ PARSE_RELAXED,
+ HAS_PASSWORD,
+ HAS_AUTH_PARAMS,
+ ENCODED,
+ NON_DNS,
+ ENCODED_QUERY,
+ ENCODED_PATH,
+ ENCODED_FRAGMENT
+ }
+
+ [Flags]
+ [Version (since = "2.66")]
+ [CCode (cprefix = "G_URI_HIDE_", has_type_id = false)]
+ public enum UriHideFlags {
+ NONE,
+ USERINFO,
+ PASSWORD,
+ AUTH_PARAMS,
+ QUERY,
+ FRAGMENT
+ }
+
+ [Version (since = "2.66")]
+ public struct UriParamsIter {
+ public UriParamsIter (string @params, int length = -1, string separators = "&;", UriParamsFlags flags = 0);
+ public bool next (out string attribute = null, out string @value = null) throws Error;
+ }
+
+ [Flags]
+ [Version (since = "2.66")]
+ [CCode (cprefix = "G_URI_PARAMS_", has_type_id = false)]
+ public enum UriParamsFlags {
+ NONE,
+ CASE_INSENSITIVE,
+ WWW_FORM,
+ PARSE_RELAXED
+ }
+
/* Shell-related Utilities */
public errordomain ShellError {
@@ -4511,24 +4643,48 @@ namespace GLib {
public string get_mime_type (string uri) throws BookmarkFileError;
public bool get_is_private (string uri) throws BookmarkFileError;
public bool get_icon (string uri, out string href, out string mime_type) throws BookmarkFileError;
+ [Version (deprecated_since = "2.66", replacement = "get_added_date_time")]
public time_t get_added (string uri) throws BookmarkFileError;
+ [Version (since = "2.66")]
+ public unowned DateTime get_added_date_time (string uri) throws BookmarkFileError;
+ [Version (deprecated_since = "2.66", replacement = "get_modified_date_time")]
public time_t get_modified (string uri) throws BookmarkFileError;
+ [Version (since = "2.66")]
+ public unowned DateTime get_modified_date_time (string uri) throws BookmarkFileError;
+ [Version (deprecated_since = "2.66", replacement = "get_visited_date_time")]
public time_t get_visited (string uri) throws BookmarkFileError;
+ [Version (since = "2.66")]
+ public unowned DateTime get_visited_date_time (string uri) throws BookmarkFileError;
[CCode (array_length_type = "gsize")]
public string[] get_groups (string uri) throws BookmarkFileError;
[CCode (array_length_type = "gsize")]
public string[] get_applications (string uri) throws BookmarkFileError;
+ [Version (deprecated_since = "2.66", replacement = "get_application_info")]
public bool get_app_info (string uri, string name, out string exec, out uint count, out time_t stamp) throws BookmarkFileError;
+ [Version (since = "2.66")]
+ public bool get_application_info (string uri, string name, out string exec, out uint count, out unowned DateTime? stamp) throws BookmarkFileError;
public void set_title (string uri, string title);
public void set_description (string uri, string description);
public void set_mime_type (string uri, string mime_type);
public void set_is_private (string uri, bool is_private);
public void set_icon (string uri, string href, string mime_type);
+ [Version (deprecated_since = "2.66", replacement = "set_added_date_time")]
public void set_added (string uri, time_t added);
+ [Version (since = "2.66")]
+ public void set_added_date_time (string uri, DateTime added);
public void set_groups (string uri, string[] groups);
+ [Version (deprecated_since = "2.66", replacement = "set_modified_date_time")]
public void set_modified (string uri, time_t modified);
+ [Version (since = "2.66")]
+ public void set_modified_date_time (string uri, DateTime modified);
+ [Version (deprecated_since = "2.66", replacement = "set_visited_date_time")]
public void set_visited (string uri, time_t visited);
+ [Version (since = "2.66")]
+ public void set_visited_date_time (string uri, DateTime visited);
+ [Version (deprecated_since = "2.66", replacement = "set_application_info")]
public bool set_app_info (string uri, string name, string exec, int count, time_t stamp) throws BookmarkFileError;
+ [Version (since = "2.66")]
+ public bool set_application_info (string uri, string name, string exec, int count, DateTime? stamp) throws BookmarkFileError;
public void add_group (string uri, string group);
public void add_application (string uri, string name, string exec);
public bool remove_group (string uri, string group) throws BookmarkFileError;
@@ -5731,6 +5887,7 @@ namespace GLib {
public const uint @2_60;
public const uint @2_62;
public const uint @2_64;
+ public const uint @2_66;
[CCode (cname = "glib_binary_age")]
public const uint binary_age;
@@ -6322,7 +6479,13 @@ namespace GLib {
ELYMAIC, /* Elym */
NANDINAGARI, /* Nand */
NYIAKENG_PUACHUE_HMONG, /* Rohg */
- WANCHO; /* Wcho */
+ WANCHO, /* Wcho */
+
+ /* Unicode 13.0 additions */
+ CHORASMIAN, /* Chrs */
+ DIVES_AKURU, /* Diak */
+ KHITAN_SMALL_SCRIPT, /* Kits */
+ YEZIDI; /* Yezi */
[CCode (cname = "g_unicode_script_to_iso15924")]
public uint32 to_iso15924 ();
diff --git a/vapi/gobject-2.0.vapi b/vapi/gobject-2.0.vapi
index e3b2dca5e..c7e3716c1 100644
--- a/vapi/gobject-2.0.vapi
+++ b/vapi/gobject-2.0.vapi
@@ -252,6 +252,8 @@ namespace GLib {
public unowned GLib.ParamSpec get_redirect_target ();
[CCode (cname = "g_param_spec_internal")]
public ParamSpec.@internal (GLib.Type param_type, string name, string nick, string blurb, GLib.ParamFlags flags);
+ [Version (since = "2.66")]
+ public static bool is_valid_name (string name);
public unowned GLib.ParamSpec @ref ();
public unowned GLib.ParamSpec ref_sink ();
public void set_qdata (GLib.Quark quark, void* data);
@@ -567,6 +569,8 @@ namespace GLib {
public static void emit_by_name (void* instance, string detailed_signal, ...);
public static unowned GLib.SignalInvocationHint? get_invocation_hint (void* instance);
public static bool has_handler_pending (void* instance, uint signal_id, GLib.Quark detail, bool may_be_blocked);
+ [Version (since = "2.66")]
+ public static bool is_valid_name (string name);
[CCode (array_length_type = "guint")]
public static uint[] list_ids (GLib.Type itype);
public static uint lookup (string name, GLib.Type itype);
@@ -770,6 +774,8 @@ namespace GLib {
public void set_instance (void* instance);
public void set_int (int v_int);
public void set_int64 (int64 v_int64);
+ [Version (since = "2.66")]
+ public void set_interned_string (string? v_string);
public void set_long (long v_long);
public void set_object (GLib.Object? v_object);
public void set_param (GLib.ParamSpec? param);
diff --git a/vapi/metadata/Gio-2.0.metadata b/vapi/metadata/Gio-2.0.metadata
index 26eec0e38..510cfd2b5 100644
--- a/vapi/metadata/Gio-2.0.metadata
+++ b/vapi/metadata/Gio-2.0.metadata
@@ -224,6 +224,9 @@ Socket
.condition_wait throws="GLib.IOError"
.connection_factory_create_connection parent="GLib.SocketConnection" name="factory_create_connection" symbol_type="function"
.create_source skip=false type="GLib.SocketSource"
+ .receive.buffer out=false
+ .receive_from.buffer out=false
+ .receive_with_blocking.buffer out=false
SocketControlMessage
.serialize.data type="uint8[]"
SocketListener
@@ -375,6 +378,8 @@ Application
Converter
.convert.inbuf nullable=false
DBusSubtreeVTable.enumerate skip=false
+DtlsConnection
+ .get_channel_binding_data#method virtual vfunc_name="get_binding_data" throws="GLib.TlsChannelBindingError"
File
.measure_disk_usage* skip=false
.measure_disk_usage*.* default=()
@@ -394,5 +399,7 @@ TlsBackend
.get_client_connection_type abstract
.get_file_database_type abstract
.get_server_connection_type abstract
+TlsConnection
+ .get_channel_binding_data#method virtual vfunc_name="get_binding_data" throws="GLib.TlsChannelBindingError"
IOStream
.splice_async finish_instance=false
diff --git a/vapi/metadata/Pango-1.0.metadata b/vapi/metadata/Pango-1.0.metadata
index 03745c299..3489f74c4 100644
--- a/vapi/metadata/Pango-1.0.metadata
+++ b/vapi/metadata/Pango-1.0.metadata
@@ -77,6 +77,7 @@ Attribute
.destroy destroys_instance
AttrIterator
.destroy destroys_instance
+ .get_font.language out
Coverage
.unref destroys_instance=false
Item
diff --git a/vapi/pango.vapi b/vapi/pango.vapi
index f96714851..0290766da 100644
--- a/vapi/pango.vapi
+++ b/vapi/pango.vapi
@@ -66,7 +66,7 @@ namespace Pango {
public unowned Pango.Attribute? @get (Pango.AttrType type);
[Version (since = "1.2")]
public GLib.SList<Pango.Attribute> get_attrs ();
- public void get_font (Pango.FontDescription desc, Pango.Language? language, owned GLib.SList<Pango.Attribute>? extra_attrs);
+ public void get_font (Pango.FontDescription desc, out unowned Pango.Language? language, owned GLib.SList<Pango.Attribute>? extra_attrs);
public bool next ();
public void range (out int start, out int end);
}
Reply to: