Since we are building our parser from scratch now: 1. We have control over which proccessor goes at what priority number. Thus, we have also shifted the deprecated `.add()` calls to use the new `.register()` calls with explicit priorities, but maintaining the original order that the old method generated. 2. We do not have to remove the processors added by py-markdown that we do not use in Zulip; we explicitly add only the processors we do require. 3. We can cluster the building of each type of parser in one place, and in the order they need to be so that when we register them, there is no need to sort the list. This also makes for a huge improvement in the readability of the code, as all the components of each type are registered in the same function. These are significant performance improvements, because we save on calls to `str.startswith` in `.add()`, all the resources taken to generate the default to-be-removed processors and the time taken to sort the list of processors. Following are the profiling results for the changes made. Here, we build 10 engines one after the other and note the time taken to build each of them. 1st pass represents the state after this commit and 2nd pass represent the state after some regex modifications in the commits that follow by Steve Howell. All times are in microseconds. | nth Engine | Old Time | 1st Pass | 2nd Pass | | ---------- | -------- | -------- | -------- | | 1 | 92117.0 | 81775.0 | 76710.0 | | 2 | 1254.0 | 558.0 | 341.0 | | 3 | 1170.0 | 472.0 | 305.0 | | 4 | 1155.0 | 519.0 | 301.0 | | 5 | 1170.0 | 546.0 | 326.0 | | 6 | 1271.0 | 609.0 | 416.0 | | 7 | 1125.0 | 459.0 | 299.0 | | 8 | 1146.0 | 476.0 | 390.0 | | 9 | 1274.0 | 446.0 | 301.0 | | 10 | 1135.0 | 451.0 | 297.0 |
Zulip overview
Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of threaded conversations. Zulip is used by open source projects, Fortune 500 companies, large standards bodies, and others who need a real-time chat system that allows users to easily process hundreds or thousands of messages a day. With over 300 contributors merging over 500 commits a month, Zulip is also the largest and fastest growing open source group chat project.
Getting started
Click on the appropriate link below. If nothing seems to apply, join us on the Zulip community server and tell us what's up!
You might be interested in:
-
Contributing code. Check out our guide for new contributors to get started. Zulip prides itself on maintaining a clean and well-tested codebase, and a stock of hundreds of beginner-friendly issues.
-
Contributing non-code. Report an issue, translate Zulip into your language, write for the Zulip blog, or give us feedback. We would love to hear from you, even if you're just trying the product out.
-
Supporting Zulip. Advocate for your organization to use Zulip, write a review in the mobile app stores, or upvote Zulip on product comparison sites.
-
Checking Zulip out. The best way to see Zulip in action is to drop by the Zulip community server. We also recommend reading Zulip for open source, Zulip for companies, or Zulip for working groups and part time communities.
-
Running a Zulip server. Setting up a server takes just a couple of minutes. Zulip runs on Ubuntu 18.04 Bionic, Ubuntu 16.04 Xenial, Ubuntu 14.04 Trusty, and Debian 9 Stretch. The installation process is documented here. Commercial support is available; see https://zulipchat.com/plans for details.
-
Using Zulip without setting up a server. https://zulipchat.com offers free and commercial hosting.
-
Applying for a Zulip internship. Zulip runs internship programs with Outreachy, Google Summer of Code, and the MIT Externship program. Zulip also participates in Google Code-In. More information is available here.
You may also be interested in reading our blog or following us on twitter. Zulip is distributed under the Apache 2.0 license.