This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
## Gumbo 0.10.1 (2015-04-30)
|
||||
|
||||
Same as 0.10.0, but with the version number bumped because the last version-number commit to v0.9.4 makes GitHub think that v0.9.4 is the latest version and so it's not highlighted on the webpage.
|
||||
|
||||
## Gumbo 0.10.0 (2015-04-30)
|
||||
|
||||
* Full support for `<template>` tag (kevinhendricks, nostrademons).
|
||||
* Some fixes for `<rtc>`/`<rt>` handling (kevinhendricks, vmg).
|
||||
* All html5lib-trunk tests pass now! (kevinhendricks, vmg, nostrademons)
|
||||
* Support for fragment parsing (vmg)
|
||||
* A couple additional example programs (kevinhendricks)
|
||||
* Performance improvements totaling an estimated 30-40% total improvement (vmg, nostrademons).
|
||||
|
||||
## Gumbo 0.9.4 (2015-04-30)
|
||||
|
||||
* Additional Visual Studio fixes (lowjoel, nostrademons)
|
||||
* Fixed some unused variable warnings.
|
||||
* Fix for glibtoolize vs. libtoolize build errors on Mac.
|
||||
* Fixed `CDATA` end tag handling.
|
||||
|
||||
## Gumbo 0.9.3 (2015-02-17)
|
||||
|
||||
* Bugfix for `Æ` entities (rgrove)
|
||||
* Fix `CDATA` handling; `CDATA` sections now generate a `GUMBO_NODE_CDATA` node rather
|
||||
than plain text.
|
||||
* Fix `get_title example` to handle whitespace nodes (gsnedders)
|
||||
* Visual Studio compilation fixes (fishioon)
|
||||
* Take the namespace into account when determining whether a node matches a
|
||||
certain tag (aroben)
|
||||
* Replace the varargs tag functions with a tagset bytevector, for a 20-30%
|
||||
speedup in overall parse time (kevinhendricks, vmg)
|
||||
* Add MacOS X support to Travis CI, and fix the deployment/DLL issues this
|
||||
uncovered (nostrademons, kevinhendricks, vmg)
|
||||
|
||||
## Gumbo 0.9.2 (2014-09-21)
|
||||
|
||||
* Performance improvements: Ragel-based char ref decoder and DFA-based UTF8
|
||||
decoder, totaling speedups of up to 300%.
|
||||
* Added benchmarking program and some sample data.
|
||||
* Fixed a compiler error under Visual Studio.
|
||||
* Fix an error in the ctypes bindings that could lead to memory corruption in
|
||||
the Python bindings.
|
||||
* Fix duplicate attributes when parsing `<isindex>` tags.
|
||||
* Don't leave semicolons behind when consuming entity references (rgrove)
|
||||
* Internally rename some functions in preparation for an amalgamation file
|
||||
(jdeng)
|
||||
* Add proper cflags for gyp builds (skabbes)
|
||||
|
||||
## Gumbo 0.9.1 (2014-08-07)
|
||||
|
||||
* First version listed on PyPi.
|
||||
* Autotools files excluded from GitHub and generated via autogen.sh. (endgame)
|
||||
* Numerous compiler warnings fixed. (bnoordhuis, craigbarnes)
|
||||
* Google security audit passed.
|
||||
* Gyp support (tfarina)
|
||||
* Naming convention for structs changed to avoid C reserved words.
|
||||
* Fix several integer and buffer overflows (Maxime2)
|
||||
* Some Visual Studio compiler support (bugparty)
|
||||
* Python3 compatibility for the ctypes bindings.
|
||||
|
||||
## Gumbo 0.9.0 (2013-08-13)
|
||||
|
||||
* Initial release open-sourced by Google.
|
||||
@@ -0,0 +1,129 @@
|
||||
.PHONY: all clean check coverage
|
||||
|
||||
gumbo_objs := $(patsubst %.c,build/%.o,$(wildcard src/*.c))
|
||||
test_objs := $(patsubst %.cc,build/%.o,$(wildcard test/*.cc))
|
||||
gtest_lib := googletest/make/gtest_main.a
|
||||
|
||||
# make SANITIZEFLAGS='-fsanitize=undefined -fsanitize=address'
|
||||
SANITIZEFLAGS :=
|
||||
CPPFLAGS := -Isrc
|
||||
CFLAGS := -std=c99 -Os -Wall
|
||||
CXXFLAGS := -isystem googletest/include -std=c++11 -Os -Wall
|
||||
LDFLAGS := -pthread
|
||||
|
||||
all: check
|
||||
|
||||
oss-fuzz:
|
||||
./fuzzer/build-ossfuzz.sh
|
||||
|
||||
fuzzers: fuzzer-normal fuzzer-asan fuzzer-ubsan fuzzer-msan
|
||||
|
||||
fuzzer-normal:
|
||||
./fuzzer/build.sh
|
||||
|
||||
fuzzer-asan:
|
||||
SANITIZER=asan ./fuzzer/build.sh
|
||||
|
||||
fuzzer-ubsan:
|
||||
SANITIZER=ubsan ./fuzzer/build.sh
|
||||
|
||||
fuzzer-msan:
|
||||
SANITIZER=msan ./fuzzer/build.sh
|
||||
|
||||
# don't try to regenerate ragel or gperf files in CI, that should be a development-only action and
|
||||
# the generated files should be committed to SCM
|
||||
ifneq ($(CI),true)
|
||||
src/foreign_attrs.c: src/foreign_attrs.gperf
|
||||
gperf -m100 -n $< | ./gperf-filter.sed > $@
|
||||
|
||||
src/%.c: src/%.gperf
|
||||
gperf -m100 $< | ./gperf-filter.sed > $@
|
||||
|
||||
src/%.c: src/%.rl
|
||||
ragel -F1 -o $@ $<
|
||||
endif
|
||||
|
||||
build/src:
|
||||
mkdir -p $@
|
||||
|
||||
build/test:
|
||||
mkdir -p $@
|
||||
|
||||
build/src/%.o: src/%.c build/src/flags | build/src
|
||||
$(CC) -MMD $(CPPFLAGS) $(CFLAGS) $(SANITIZEFLAGS) -c -o $@ $<
|
||||
|
||||
build/test/%.o: test/%.cc build/test/flags | build/test
|
||||
$(CXX) -MMD $(CPPFLAGS) $(CXXFLAGS) $(SANITIZEFLAGS) -c -o $@ $<
|
||||
|
||||
build/run_tests: $(gumbo_objs) $(test_objs) $(gtest_lib)
|
||||
$(CXX) -o $@ $+ $(LDFLAGS) $(SANITIZEFLAGS)
|
||||
|
||||
check: build/run_tests
|
||||
./build/run_tests
|
||||
|
||||
coverage:
|
||||
$(RM) build/{src,test}/*.gcda
|
||||
$(RM) build/*.info
|
||||
$(MAKE) CPPFLAGS='-Isrc -DNDEBUG=1' \
|
||||
CFLAGS='-std=c99 --coverage -g -O0' \
|
||||
CXXFLAGS='-isystem googletest/include -std=c++11 --coverage -g -O0' \
|
||||
LDFLAGS='--coverage' \
|
||||
build/run_tests
|
||||
lcov --no-external \
|
||||
--initial \
|
||||
--capture \
|
||||
--base-directory . \
|
||||
--directory build \
|
||||
--output-file build/coverage-pre.info
|
||||
awk -F '[:,]' \
|
||||
'/^SF:/ { delete defs } /^FN:/ { defs[$$2]=1 } /^DA:/ { if ($$3 == 0 && $$2 in defs) next } { print }' \
|
||||
build/coverage-pre.info > build/coverage-initial.info
|
||||
./build/run_tests
|
||||
lcov --no-external \
|
||||
--capture \
|
||||
--base-directory . \
|
||||
--directory build \
|
||||
--rc lcov_branch_coverage=1 \
|
||||
--output-file build/coverage-test.info
|
||||
lcov --add-tracefile build/coverage-initial.info \
|
||||
--add-tracefile build/coverage-test.info \
|
||||
--rc lcov_branch_coverage=1 \
|
||||
--output-file build/coverage.info
|
||||
lcov --remove build/coverage.info '$(CURDIR)/googletest/*' \
|
||||
--rc lcov_branch_coverage=1 \
|
||||
--output-file build/coverage.info
|
||||
genhtml --branch-coverage \
|
||||
--output-directory build/coverage \
|
||||
build/coverage.info
|
||||
|
||||
clean:
|
||||
$(RM) -r build
|
||||
$(RM) -r fuzzer/build fuzzer/src-* fuzzer/gumbo_corpus
|
||||
|
||||
build/src/flags: | build/src
|
||||
@echo 'old_CC := $(CC)' > $@
|
||||
@echo 'old_CPPFLAGS := $(CPPFLAGS)' >> $@
|
||||
@echo 'old_CFLAGS := $(CFLAGS)' >>$@
|
||||
@echo 'old_SANITIZEFLAGS := $(SANITIZEFLAGS)' >> $@
|
||||
@echo 'old_LDFLAGS := $(LDFLAGS)' >> $@
|
||||
|
||||
build/test/flags: | build/test
|
||||
@echo 'old_CXX := $(CXX)' > $@
|
||||
@echo 'old_CPPFLAGS := $(CPPFLAGS)' >> $@
|
||||
@echo 'old_CXXFLAGS := $(CXXFLAGS)' >> $@
|
||||
@echo 'old_SANITIZEFLAGS := $(SANITIZEFLAGS)' >> $@
|
||||
@echo 'old_LDFLAGS := $(LDFLAGS)' >> $@
|
||||
|
||||
ifeq (,$(filter clean coverage,$(MAKECMDGOALS)))
|
||||
# Ensure that the flags are up to date.
|
||||
-include build/src/flags build/test/flags
|
||||
ifneq ($(old_CC) | $(old_CPPFLAGS) | $(old_CFLAGS) | $(old_SANITIZEFLAGS) | $(old_LDFLAGS),$(CC) | $(CPPFLAGS) | $(CFLAGS) | $(SANITIZEFLAGS) | $(LDFLAGS))
|
||||
.PHONY: build/src/flags
|
||||
endif
|
||||
ifneq ($(old_CXX) | $(old_CPPFLAGS) | $(old_CXXFLAGS) | $(old_SANITIZEFLAGS) | $(old_LDFLAGS),$(CXX) | $(CPPFLAGS) | $(CXXFLAGS) | $(SANITIZEFLAGS) | $(LDFLAGS))
|
||||
.PHONY: build/test/flags
|
||||
endif
|
||||
|
||||
# Include dependencies.
|
||||
-include $(test_objs:.o=.d) $(gumbo_objs:.o=.d)
|
||||
endif
|
||||
@@ -0,0 +1,27 @@
|
||||
Gumbo HTML parser THANKS file
|
||||
|
||||
Gumbo was originally written by Jonathan Tang, but many people helped out through suggestions, question-answering, code reviews, bugfixes, and organizational support. Here is a list of these people. Help me keep it complete and exempt of errors.
|
||||
|
||||
Adam Barth
|
||||
Adam Roben
|
||||
Ben Noordhuis
|
||||
Bowen Han
|
||||
Constantinos Michael
|
||||
Craig Barnes
|
||||
Geoffrey Sneddon
|
||||
Ian Hickson
|
||||
Jack Deng
|
||||
Joel Low
|
||||
Jonathan Shneier
|
||||
Kevin Hendricks
|
||||
Mason Tang
|
||||
Maxim Zakharov
|
||||
Michal Zalewski
|
||||
Neal Norwitz
|
||||
Othar Hansson
|
||||
Ryan Grove
|
||||
Stefan Haustein
|
||||
Steffen Meschkat
|
||||
Steven Kabbes
|
||||
Thiago Farina
|
||||
Vicent Marti
|
||||
Reference in New Issue
Block a user