uBlock Origin 版本历史 - 25 个版本
uBlock Origin 作者: Raymond Hill
uBlock Origin 版本历史 - 25 个版本
小心旧版本!显示这些版本是为了测试和参考目的。您应该始终使用附加组件的最新版本。
最新版本
版本 1.61.0
发布于 2024年11月5日 - 3.77 MB适用于 firefox 78.0 及更高版本, android 113.0 及更高版本See complete release notes for 1.61.0.
Fixes / changes
- Improve
prevent-refresh
scriptlet - Improve
googlesyndication_adsbygoogle.js
scriptlet - Offer ability to skip redirects in strict-blocked page
- Add
-blocked
directive tourlskip=
option - Add
trusted-set-attr
scriptlet - Remove
64:ff9b:
as private network block - Ensure
urlskip=
redirects only tohttps:
- Add support to
urlskip=
media resources - Add
-uricomponent
tourlskip=
option - Add
forbidden
/forever
as safe cookie values (by @ryanbr) - Add regex extraction transformation step to
urlskip=
option - Improve
prevent-window-open
scriptlet - Add support to parse Adguard's
[$domain=/.../]
regex-based modifier - Validate result type of XPath expressions
- Fix npm test suite
- Add ability to lookup parameter name in
urlskip=
- Mind that BroadcastChannel contructor can throw in Firefox
- Add
trusted-override-element-method
scriptlet - Add
trusted-prevent-dom-bypass
scriptlet - Improve
prevent-xhr
scriptlet; addtrusted-prevent-xhr
scriptlet - ...
Commits history since last version源代码遵循 GNU 通用公共许可证 v3.0 发布
下载 Firefox 并安装扩展您需要 Firefox 来使用此扩展- Improve
较早版本
版本 1.60.0
发布于 2024年9月26日 - 3.78 MB适用于 firefox 78.0 及更高版本, android 113.0 及更高版本See complete release notes for 1.60.0.
Fixes / changes
- Add advanced setting
dnsResolveEnabled
- Fix contextual menu quirks
- Fix exception thrown in
spoof-css
in Firefox - Throttle down repeated scriptlet logging information
- Improve scriptlet helper
proxy-apply
- Add an entry in Report page for badware/phishing category
- New static network filter option
urlskip=
- Rewrite cname uncloaking code to account for new
ipaddress=
option - Avoid using dns.resolve() for proxied DNS resolution
- Add support for
lan
/loopback
values toipaddress=
option - New static network filter option
ipaddress=
- Add ability to quote static network option values
- Improve
prevent-fetch
scriptlet - Apply CSP/PP injections to
object
resources - Improve
xml-prune
scriptlet - Add support for
application/dash+xml
inreplace=
option - Add ability to directly evaluate static network filtering engine
- Fix
prevent-window-open
for when logger is open - Improve
prevent-window-open
scriptlet - Improve
validate-constant
scriptlet helper - Improve
trusted-replace-outbound-text
scriptlet - ...
Commits history since last version源代码遵循 GNU 通用公共许可证 v3.0 发布
- Add advanced setting
版本 1.59.0
发布于 2024年7月30日 - 3.77 MB适用于 firefox 78.0 及更高版本, android 113.0 及更高版本See complete release notes for 1.59.0.
Fixes / changes
- Improve
href-sanitizer
scriptlet - Improve
trusted-replace-node-text
scriptlet - Improve
set-constant
scriptlet - Improve
prevent-fetch
scriptlet - Improve
href-sanitizer
scriptlet - Fix CSP/PP header injection in non-document resources
- Add
trusted-suppress-native-method
scriptlet - Add support for
$currentISODate$
intrusted-set-cookie
scriptlet - Add
essential
andnonessential
to set-cookie (by @ryanbr) - Fix distance calculation in picker
- Fix bad serialization of Date objects
- Fix race condition when loading redirect/scriptlet resources
- Improve logging in
prevent-addEventListener
scriptlet - Add
:matches-prop()
pseudo CSS operator - Improve
set-cookie
scriptlet - Improve
trusted-replace-node-text
scriptlet - Improve
trusted-replace-(fetch|xhr)-response
scriptlets - Improve
prevent-addEventListener
scriptlet - Add
isodate
as available placeholder for auto-comment - Improve
trusted-replace-outbound-text
scriptlet - Classify generic cosmetic filters with comma as highly generic
- ...
Commits history since last version源代码遵循 GNU 通用公共许可证 v3.0 发布
- Improve
版本 1.58.0
发布于 2024年5月21日 - 3.72 MB适用于 firefox 78.0 及更高版本, android 113.0 及更高版本See complete release notes for 1.58.0.
Fixes / changes
- Fallback to
requestAnimationFrame
whenrequestIdleCallback
is not available - Improve
trusted-click-element
scriptlet - Replace EasyDutch with AdGuard Dutch
- Add checksum validation when loading trie buffers in selfie
- Catch exceptions in API calls for the sake of old Chromium versions
- Add
accept
/reject
toset-local-storage-item
(by @ryanbr) - Use raw string for regex patterns in python scripts
- Improve
noeval-if
scriptlet - Improve
trusted-set-local-storage-item
scriptlet - Fix potential corruption when reading serialized data
- Improve
remove-[attr|class]
scriptlets - Improve dashboard layout at high zoom factor
- Add a console pane to the logger
- Improve
spoof-css
scriptlet - Fix bad date computation in auto-comment feature
- Fix regression breaking import of
file://
lists - Add
trusted-replace-outbound-text
scriptlet - Improve
[trusted-]set-cookie
scriptlets
Commits history since last version源代码遵循 GNU 通用公共许可证 v3.0 发布
- Fallback to
版本 1.57.2
发布于 2024年4月8日 - 3.68 MB适用于 firefox 78.0 及更高版本, android 113.0 及更高版本See complete release notes for 1.57.2.
This is an emergency release to fix an issue causing differential updates to fail. The issue primarily affected Firefox because of uBO's use of indexedDB prior to 1.57.0. The issue did not affect full update of filter lists even though the asset viewer would show old versions of those lists (internally uBO compiles lists and would still correctly compile from lists fetched by full updater).
Fixes / changes
Fix stray lists in redesigned cache storage
Commits history since last version源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.57.0
发布于 2024年3月29日 - 3.68 MB适用于 firefox 78.0 及更高版本, android 113.0 及更高版本See complete release notes for 1.57.0.
Fixes / changes
- Do not block large media resources when loaded as top-level document
- Properly manage cache storage regarding managed user filters
- Improve
[trusted-]set-cookie
scriptlets - Fixed Belgian and Nepali flags for Windows Chromium users (by @DandelionSprout)
- Mind that
tabs.sendMessage
can throw - Improve
set-cookie
scriptlet - Append wildcard character only when filter starts & ends with
/
- Fix failure to create popup logger window sometimes
- Improve json-prune-related scriptlets
- Support maximizing editor to viewport size
- Add advanced setting to force popup panel orientation
- Add checkboxes to "My filters" pane
- Assume UTF-8 when no encoding can be looked up
- Fix issue with "My filters" pane on mobile
- Support aborting "Pick" mode in element picker
- Remove sections with no lists in "Filter lists" pane
- Add "Social widgets", "Cookie notices" sections in "Filter lists" pane
- No longer disable generic cosmetic filters by default on mobile
- Improve
spoof-css
scriptlet - Make asset updater compatible with non-persistent background page
- Move dragbar to the top of element picker dialog
- ...Commits history since last version
源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.56.0
发布于 2024年2月17日 - 3.64 MB适用于 firefox 78.0 及更高版本, android 113.0 及更高版本See complete release notes for 1.56.0.
Fixes / changes
- Mind that multiple
uritransform
may apply to a single request - Fix incorrect built-in filtering expression in logger
- Fix improper invalidation of valid
uritransform
exception filters - Improve
prevent-addEventListener
scriptlet - Fix Chartbeat flicker control
div
's (by @ryanbr) - Fix potential exfiltration of browsing history by a rogue list author through
permissions=
- Ignore event handler-related attributes in
set-attr
scriptlet (suggested by @distinctmondaylilac) - Fix potential exfiltration of browsing history by a rogue list author through
csp=
(reported by @distinctmondaylilac) - Output scriptlet logging information to the logger
- Fix decompiling of scriptlet parameters
- Add support for
extraMatch
intrusted-click-element
scriptlet - Remove minimum height constraint from "My filters" pane
- Unregister all scriptlets when disabling uBO on a specific site
- Allow
uritransform
to process the hash part of a URL - Remember presentation state of "My rules" pane
- Fix improperly assembled
!#include
sublists - Mark procedural filters with pseudo-elements selector as invalid
- Prevent access to picker when "My filters" is not enabled
- Provide visual feedback when applying changes in "Filter lists" pane
- [...]
Commits history since last version源代码遵循 GNU 通用公共许可证 v3.0 发布
- Mind that multiple
版本 1.55.0
发布于 2024年1月3日 - 3.48 MB适用于 firefox 78.0 及更高版本, android 113.0 及更高版本See complete release notes for 1.55.0.
Fixes / changes
- Mind drop events in filter expression field of logger
- Improve
xml-prune
scriptlet - Fix message entries overflowing in logger
- Add support for
application/x-javascript
inreplace=
option - Extend support for differential updates to imported lists
- Add detection of mismatched
!#if
-!#endif
in linter - Support links to update lists which are differential update-friendly
- Remove "Purge all caches" button from "Filter lists" pane
- Add support for
all
list token in updater-link feature - Fix logging of broad exception filter
#@#+js()
- Improve
no-xhr-if
scriptlet - Ensure cache storage backend is selected before access
- Fix popup panel rendering when embedded in logger
- Add visual hint in support information re. differential update
- Remove obsolete web accessible resources
- Rename
urltransform
touritransform
- Vertically expand/collapse in steps in dom inspector
- Reset the DOM inspector when URL in top context changes
- Support shadow-piercing combinator
>>>
intrusted-click-element
- [...]
Commits history since last version源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.54.0
发布于 2023年11月22日 - 3.46 MB适用于 firefox 78.0 及更高版本, android 113.0 及更高版本See complete release notes for 1.54.0.
Fixes / changes
- Enable path for native
has()
selector in Firefox - Allow scriptlets to be injected in
about:blank
- Fix faulty
as
vararg inset-constant
scriptlet - Add support to redirect to
noop.json
- More improvements to the
google-ima
shim script (by @kzar) - All exceptions filters are exempt from requiring a trusted source
- Add
trusted-set-session-storage-item
scriptlet - Allow the use of quotes in
set-cookie
scriptlet - Allow the use of quotes in
set-(local|session)-storage-item
- Add ability to trigger cookie removal on specific events
- Ensure CSSTree does not hold a reference onto last parsed string
- Lower minimum Expires value to 4h
- Properly reset needle length in unserialized buffer
- Add additional flags to regional lists (by @DandelionSprout)
- Harden scriptlets which need to serialize function code into string
- Reset
g
regexes before use inrmnt
/rpnt
scriptlets - Apply response filtering according to mime type
- Add t/f to set-cookie (by @ryanbr)
- Have
urltransform=
use the same syntax asreplace=
- Implement network filter option
replace=
- ...
Commits history since last version源代码遵循 GNU 通用公共许可证 v3.0 发布
- Enable path for native
版本 1.53.0
发布于 2023年10月31日 - 3.43 MB适用于 firefox 78.0 及更高版本, android 113.0 及更高版本See complete release notes for 1.53.0.
Fixes / changes
- Improve google-ima shim script (by @kzar)
- Match
type
exactly inprevent-addEventListener
scriptlet - Add filtering expressions for logger output
- Add warning against adding custom filters from untrusted sources
- Consider My filters an untrusted source by default
- Add
trusted-prune-inbound-object
scriptlet - Add
dontOverwrite
vararg to(trusted-)set-cookie
scriptlets - Add "on" and "off" values to set-cookie (by @peace2000)
- Fine tune
set-local-storage-item
as per feedback - Support AdGuard's
[trusted-]set-cookie-reload
scriptlets - Ignore assets older than cached version when fetching from CDNs
- Support quoting scriptlet parameters with backticks
- Add new static network filter option:
urltransform
- Support pane: mark lists as obsolete only when update button is clicked
- Bring
header=
filter option out of experimental status - Add
trusted-click-element
scriptlet - Add ability to update lists through links with specifically crafted URLs
- Fix overzealous matching in
(remove|replace)-node-text
scriptlets - Fix
no-xhr-if
scriptlet for Firefox - [More ...]
Commits history since last version.
源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.52.2
发布于 2023年9月21日 - 3.41 MB适用于 firefox 78.0 及更高版本, android 79.0 及更高版本See complete release notes for 1.52.2.
Fixes / changes
- Fix XHR hook partial response handling (fix by @ephemeralViolette)
- Fix regression in
:is()
operator - Do not assume set viewport for popup panel when using portrait mode in descktop
- Fix removal of
:scope
prefix in:has()
operator
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.52.0
发布于 2023年9月8日 - 3.41 MB适用于 firefox 78.0 及更高版本, android 79.0 及更高版本See complete release notes for 1.52.0.
Fixes / changes
- Add
json-prune-xhr-response
andtrusted-replace-xhr-response
scriptlets - Use
globalThis
instead ofself
in scriptlet helper - Add
json-prune-fetch-response
scriptlet - Position reload icon in logger as per feedback
- Re-factor extra args for
set-constant
scriptlet - Use Unicode version of hostnames in element picker
- Disallow trailing CSS universal selector unless properly separated
- Fix/improve
xml-prune
scriptlet - Put uBO's icon in nav bar by default
- Properly serialize CSS combinators according to position in selector
- Improve
no-xhr-if
scriptlet - Use non-normalized URL for reload/report operations
- Add commented keywords to
googlesyndication_adsbygoogle.js
scriptlet - Improve
fingerprint2.js
scriptlet - Nothing can come after action operator in procedural cosmetic filters
- Add
trusted-replace-fetch-response
scriptlet - Harden
spoof-css
scriptlet - ...
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
- Add
版本 1.51.0
发布于 2023年7月19日 - 3.37 MB适用于 firefox 78.0 及更高版本, android 79.0 及更高版本See complete release notes for 1.51.0.
Fixes / changes
- Remove obsolete webaccessibleresources
- Add missing (deprecated) method to google ima
- Fix regression in handling of experimental
header=
filter option - Only already normalized CSS selectors can be fast path-compiled
- Improve compatibility with AdGuard's scriptlets
- Add static network filter option:
permissions
- Add
set-attr
scriptlet - Do not bail too early when trapping properties in
acs
scriptlet - Fix regression in cloud storage import of "Filter lists" pane
- Add
set-session-storage-item
scriptlet - Prevent negative position when widget size is greater than viewport size
- Add visual hint when not all sublists are enabled
- Add support for AdGuard's noop (
_
) network filter option - Add "tabless" filter expression for logger output
- Add support for logical expressions to
!#if
directive- Also added support for
!#else
- Also added support for
- Add resource aliases for increased compatibility with AdGuard lists
- Add compatibility with AdGuard's
#%#//scriptlet(...)
syntax- Also added support for quoted parameters in
##+js(...)
syntax
- Also added support for quoted parameters in
- Fix syntax highlighter throwing with invalid patterns
- ...
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.50.0
发布于 2023年6月7日 - 3.34 MB适用于 firefox 78.0 及更高版本, android 79.0 及更高版本See complete release notes for 1.50.0.
Fixes / changes
- Add support to remove attributes in
xml-prune
scriptlet - Fix/improve
href-sanitizer
scriptlet - Add
evaldata-prune
scriptlet - Add support for
xhr
inxml-prune
- Add
remove-node-text.js
scriptlet - Add
trusted-set-constant
scriptlet - Support injecting scriptlet in MAIN or ISOLATED world
- Add trusted-source support for privileged scriptlets (and add
replace-node-text
scriptlet) - Add
spoof-css
scriptlet - Add back AdGuard Tracking Protection
- Expand/harden some scriptlets
- Return string when storage.sync.get() promise fails
- Do not bail out when
content-disposition
isinline
- Fix improperly unselecting imported lists
- Report injected scriptlets in troubleshooting information
- Fix rendering issue of row-filter icon in popup panel
- Add "scriptlet" filter expression to logger
- Fix hostname-detecting regex
- Add support for sublists in "Filter lists" pane
- Properly handle converted procedural filters in logger
- Mind small screen size in asset viewer
- ...
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
- Add support to remove attributes in
版本 1.49.2
发布于 2023年4月26日 - 3.23 MB适用于 firefox 78.0 及更高版本, android 79.0 及更高版本See complete release notes for 1.49.2.
Fixes
- Reverse usage of browser.alarms
- Mind rejected promises from vAPI.storage API
- Properly handle promise rejection from webext.storage.local API
- Add more checks against unexpected conditions re. assets.json
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.49.0
发布于 2023年4月18日 - 3.22 MB适用于 firefox 78.0 及更高版本, android 79.0 及更高版本See complete release notes for 1.49.0.
Fixes / changes
- Make the toolbar warning timeout configurable
- Better integrate suspend-network with unprocessed-request
- Properly detect incorrect usage of CSS combinators
- Wrap usage of setTimeout in helper for background + auxiliary pages
- Start using browser.alarms instead of setTimeout() where applicable
- Fix improper detection of quotes in quoted strings
- Add matched cosmetic filters in troubleshooting information
- Add infrastructure for static filter syntax linter
- Make
object
equivalent offrame
for dynamic filtering purpose - Enforce implicit media type for filters using
mp4
option - Better detect invalid network filter patterns
- Support view source of "other" type
- Add widget to filter firewall rows in popup panel
- Add support for negated hostnames in HTML filters
- Aggressively auto update assets when at least one is very obsolete
- Normalize non-ASCII characters in
:matches-path()
argument - Refactor scriptlets injection code
- Properly handle default list status changes in assets.json
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.48.4
发布于 2023年4月1日 - 3.19 MB适用于 firefox 78.0 及更高版本, android 79.0 及更高版本See complete release notes for 1.48.4.
Fixes / changes
- Fix presumed network filter not being a valid network filter
- Avoid using ! toolbar icon badge when inconsequential
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.48.2
发布于 2023年3月28日 - 3.18 MB适用于 firefox 78.0 及更高版本, android 79.0 及更高版本源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.48.0
发布于 2023年3月21日 - 3.17 MB适用于 firefox 78.0 及更高版本, android 79.0 及更高版本See complete release notes for 1.48.0.
New
Readiness status at browser launch
uBO's toolbar icon will now reflect its readiness status at browser launch.
Code viewer
Investigating filter issues can be a serious time sink, and to help with this, a code viewer has been added to uBO. The code viewer will automatically beautify HTML/CSS/JS code, which should be an improvement over the browser built-inview-source
tool.
You can view beautified source code of HTML/CSS/JS resources when clicking the link in a logger entry. Additionally, if the advanced settingfilterAuthorMode
is set totrue
, an entry labelled View source code... will be added to the context menu, so that you can view the source code of any page/resource without having to open the logger.
Fixes / changes
- Fix broken http header filtering
- Prevent dashboard from loading at browser launch until ready
- Support removing whole lines of text with regex in m3u-prune scriptlet
- Fix broken filter parsing when prepended with spaces
- Context of
about:blank
is that of parent frame (popup
option) - Add experimental
href-sanitizer
scriptlet - Prevent dialog box from overflowing logger's viewport
- Make parser take into account
filterOnHeaders
setting - Show a distinct toolbar icon until filtering engines are fully initialized
- Add source code viewer
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.47.4
发布于 2023年3月3日 - 3.1 MB适用于 firefox 78.0 及更高版本, android 79.0 及更高版本See complete release notes for 1.47.4.
Fixes / changes
- Add list for Macedonia; add languages to Persian list
- Support update period below 1-day
- Restore behind-the-scene origin for docless secondary resources
- Refine AST template's regex for hosts file entries
- Flush cached result when adding to FilterDomainHitSet
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.47.2
发布于 2023年2月21日 - 3.08 MB适用于 firefox 78.0 及更高版本, android 79.0 及更高版本See complete release notes for 1.47.2.
Fixes / changes
- Support moving logger dialog around with touch events
- Raise minimum version of Firefox
- Fix improper invalidation of inline-(font|script) types
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.47.0
发布于 2023年2月13日 - 3.08 MB适用于 firefox 78.0 及更高版本, android 79.0 及更高版本See complete release notes for 1.47.0.
Fixes / changes
- Prevent context menu entries on non-HTTP documents
- Ignore compilation hints when applying exception cosmetic filters
- Add support for regex-based values as target domain for static extended filters
- Add support for regex-based values for
domain=
/from=
/to=
options - Rewrite static filtering parser
- uBO doesn't reject cosmetic filters with invalid pseudo-classes/pseudo-elements
- Make the logger entry dialog modeless
- Fix missing regex flags
- Import version 1.2.0 of RegexAnalyzer
- Set
charset
toutf-8
for Blob-based injected scriptlets - Disallow
-abp-...
filters if not using#?#
- Work related to keyboard shortcuts for page reload
- New network filter option:
to=[list of domain names]
- New network filter option:
method=...
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.46.0
发布于 2022年12月22日 - 3.07 MB适用于 firefox 68.0 及更高版本, android 68.0 及更高版本See complete release notes for 1.46.0.
Fixes- Add
options
stub tonofab
scriptlet - Rewrite logger's "exceptor" feature
- Use Blob URLs to reliably inject scriptlets -- as suggested by @evilpie
- Add :remove-attr() and :remove-class() pseudo selector operators
- Add pseudo-operator :matches-attr()
- Detect invalid usage of combinators in :not() pseudoclass
- Give more time for viewport to be ready (in popup panel) -- related feedback
- Handle potentially invalid CSS selector (in logger)
- Ensure state of more/less in panel reflect locked/disabled sections
- Isolate generic cosmetic filters from specific ones in generated stylesheet
- Do not cname-uncloak same-origin network requests
- Prevent the creation of non-cosmetic extended filters in element picker
- Fix visual of DOM inspector layer in dark theme mode
- Improve extraction of tokens from regexes
- Use placeholders to minimize vertical shifting at page load time
- Bundled filter lists in releases are not timestamped
- Ensure procedural filters are applied at least once
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
- Add
版本 1.45.2
发布于 2022年11月11日 - 3.09 MB适用于 firefox 68.0 及更高版本, android 68.0 及更高版本See complete release notes for 1.45.2.
Fixes
- Test for unsupported pseudo operators after normalization
- Mind implicit prelude
*
element in pseudo operators
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布
版本 1.45.0
发布于 2022年11月8日 - 3.08 MB适用于 firefox 68.0 及更高版本, android 68.0 及更高版本See complete release notes for 1.45.0.
Fixes
- Try to inject scriptlets at onResponseStarted() time
- Harden scriptlet injections
- Might fix "ublock origin not blocking ads in the sidebar of Opera GX while using youtube music", to be confirmed
- Fix improperly detecting ruleset changes re. dynamic URL filtering
- Add new scriptlet: xml-prune
- New cosmetic filter parser using CSSTree library
- Breaking change: filter list authors, please read the commit message
- Add support to report/filter SVG image elements in element picker
- Add original Firefox-authored google-ima shim script
- element-picker: Declare we support both light and dark color-schemes by @emilio
- Redesign document-blocked page
- Make popup panel reflect state of the actual blocked page
- Unescaped escaped commas in regex-based removeparam values
- Fix redundant calls to extract image data
- Extend matches-css() to support any pseudo-element
Commits history since last version.源代码遵循 GNU 通用公共许可证 v3.0 发布