summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Haszlakiewicz <erh+git@nimenees.com>2020-07-04 18:58:56 +0000
committerEric Haszlakiewicz <erh+git@nimenees.com>2020-07-04 19:00:10 +0000
commit6fa8b7ff4205b9f88d71eb63a3629eb7bf2f4f86 (patch)
tree5d934ee2635f465c5f8e1b36c482f3673bd130aa
parent6068d3f6d1dd4bd8be95e6bf4ed3e9148291b408 (diff)
downloadjson-c-6fa8b7ff4205b9f88d71eb63a3629eb7bf2f4f86.tar.gz
Don't export json-c symbols starting with an underscore, put deprecated exports into a "JSONC_PRIVATE" version, and note stuff to do during releases.
See also PR #639 and issue #621
-rw-r--r--RELEASE_CHECKLIST.txt7
-rw-r--r--json-c.sym76
2 files changed, 51 insertions, 32 deletions
diff --git a/RELEASE_CHECKLIST.txt b/RELEASE_CHECKLIST.txt
index 9ad708c..20c08fd 100644
--- a/RELEASE_CHECKLIST.txt
+++ b/RELEASE_CHECKLIST.txt
@@ -18,6 +18,8 @@
* https://github.com/lvc/abi-compliance-checker
* If the new release is not backwards compatible, then this is a MAJOR release.
* Mention removed features in ChangeLog
+ * Consider re-adding backwards compatible support, through symbol
+ aliases and appropriate entries in json-c.sym
* Update the AUTHORS file
* Exclude mentioning changes that have already been included in a point
release of the previous release branch.
@@ -63,6 +65,11 @@ to
git commit -a -m "Bump version to ${release}"
+If we're doing a major release (SONAME bump), also bump the version
+ of ALL symbols in json-c.sym.
+ See explanation at https://github.com/json-c/json-c/issues/621
+ More info at: https://software.intel.com/sites/default/files/m/a/1/e/dsohowto.pdf
+
------------
Generate the doxygen documentation:
diff --git a/json-c.sym b/json-c.sym
index bf78792..a348204 100644
--- a/json-c.sym
+++ b/json-c.sym
@@ -1,17 +1,53 @@
-JSONC_0.14 {
- global:
- _json_c_set_last_err;
- _json_c_strerror;
- _json_c_strerror_enable;
+
+/*
+ * Symbol versioning for libjson-c.
+ * All exported symbols must be listed here.
+ *
+ * See
+ * https://software.intel.com/sites/default/files/m/a/1/e/dsohowto.pdf
+ */
+
+/*
+ * Symbols in JSONC_PRIVATE are exported for historical
+ * reasons, but should not be used outside of json-c.
+ */
+JSONC_PRIVATE {
array_list_add;
- array_list_bsearch;
array_list_del_idx;
array_list_free;
- array_list_get_idx;
- array_list_length;
array_list_new;
array_list_put_idx;
array_list_sort;
+ json_hex_chars;
+ json_parse_double;
+ json_parse_int64;
+ json_parse_uint64;
+ lh_table_delete;
+ lh_table_delete_entry;
+ lh_table_free;
+ lh_table_insert;
+ lh_table_insert_w_hash;
+ lh_table_new;
+ lh_table_resize;
+ mc_debug;
+ mc_error;
+ mc_get_debug;
+ mc_info;
+ mc_set_debug;
+ mc_set_syslog;
+ printbuf_free;
+ printbuf_memappend;
+ printbuf_memset;
+ printbuf_new;
+ printbuf_reset;
+ sprintbuf;
+};
+
+JSONC_0.14 {
+ global:
+ array_list_bsearch;
+ array_list_get_idx;
+ array_list_length;
json_c_get_random_seed;
json_c_object_sizeof;
json_c_set_serialization_double_format;
@@ -20,7 +56,6 @@ JSONC_0.14 {
json_c_version_num;
json_c_visit;
json_global_set_string_hash;
- json_hex_chars;
json_number_chars;
json_object_array_add;
json_object_array_bsearch;
@@ -91,9 +126,6 @@ JSONC_0.14 {
json_object_to_json_string_ext;
json_object_to_json_string_length;
json_object_userdata_to_json_string;
- json_parse_double;
- json_parse_int64;
- json_parse_uint64;
json_pointer_get;
json_pointer_getf;
json_pointer_set;
@@ -115,30 +147,10 @@ JSONC_0.14 {
lh_kchar_table_new;
lh_kptr_table_new;
lh_ptr_equal;
- lh_table_delete;
- lh_table_delete_entry;
- lh_table_free;
- lh_table_insert;
- lh_table_insert_w_hash;
lh_table_length;
- lh_table_lookup;
lh_table_lookup_entry;
lh_table_lookup_entry_w_hash;
lh_table_lookup_ex;
- lh_table_new;
- lh_table_resize;
- mc_debug;
- mc_error;
- mc_get_debug;
- mc_info;
- mc_set_debug;
- mc_set_syslog;
- printbuf_free;
- printbuf_memappend;
- printbuf_memset;
- printbuf_new;
- printbuf_reset;
- sprintbuf;
local:
*;